2017-12-04 6 views
-2

데이터를 새로운 Thread에 DB에 저장하고 그 후에 UItoast이 표시됩니다. 절약을위한UI에서 쓰레드로부터 최상의 결과를 처리하는 방법

방법 :

public void addToBasket(String text) { 

     new Thread(() -> { 

       //emulate save 
       try { 
        Thread.sleep(5000L); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       //after that I need say ti UI thread - show Toast! 
     }).start(); 
    } 

내가이 메소드를 호출

BasketService.me().addToBasket(result.getContents()); 

는 지금 이것에 대한 AsyncTask를 사용할까요. 사용하는 등의 작업을

+1

'runOnUiThread (새의 Runnable() {공공 무효 실행() {}}) :' –

+0

사용 runOnUiThread() 타자 이해 : https://stackoverflow.com/questions/11140285/how-to-use -runonuithread –

+0

https://stackoverflow.com/a/31549559/7666442 –

답변

-1

타자를 구현하기 위해 나에게 가장 좋은 방법을 알려주십시오 :

runOnUiThread(new Runnable() { 
       public void run() { 
       //Do what ever you want do man 
      } 
     }); 

runOnUiThread() 방법은 백그라운드 스레드에서 UserInterface를 조작 할 수 있습니다.

+1

그것은 가장 좋은 방법 일까 ??? – ip696

+0

토스트 및 기타 UI 작업을 doInBackgroud()에서 사용할 수는 없으므로 –

+0

에 네트워크 작업을 만들 수 있습니다. 가장 좋은 방법은 아니지만 관련성이 있어야합니다. –

-1

nonUi 스레드에서 Ui 스레드로 콜백하는 경우 runOnUiThread() (위에서 지정한대로) 또는 Handler를 사용할 수 있습니다. 다음은 핸들러를 사용하는 예입니다.

protected static final Handler mainThreadHandler = new Handler(Looper.getMainLooper()); 

protected void onSuccessInMainThread(final R result, final Bundle bundle) { 
    mainThreadHandler.post(new Runnable() { 
     @Override 
     public void run() { 
      callback.onSuccess(result, bundle); 
     } 
    }); 
} 

protected void onErrorInMainThread(final Exception error) { 
    mainThreadHandler.post(new Runnable() { 
     @Override 
     public void run() { 
      callback.onError(error); 
     } 
    }); 
} 
+0

왜 부정적인가요? 설명 . – ADM