2017-12-04 6 views
-2

Ich möchte Daten zu DB in neuen Thread speichern und danach toast auf der .Am besten Weg Ergebnis aus Thread auf UI

Verfahren zur Einsparung:

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(); 
    } 

ich diese Methode aufrufen:

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

Ich will jetzt AsyncTask für diese. Bitte sagen Sie mir den besten Weg, um solche Aufgaben zu implementieren

+1

'runOnUiThread (neu Runnable() {public void run() {}}):' –

+0

Verwenden runOnUiThread() Teig verstehen: https://stackoverflow.com/questions/11140285/how-to-use -runonuithread –

+0

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

Antwort

-1

Teig zu verwenden:

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

runOnUiThread() Methode, um Ihre UserInterface von Hintergrund-Threads zu manipulieren.

+1

Es ist der beste Weg ??? – ip696

+0

Sie können Toast und andere UI-Operationen nicht in doInBackgroud() verwenden, da Sie möglicherweise eine Netzwerkoperation erstellen werden –

+0

Yup es ist nicht der beste Weg, aber sollte für Sie relevant sein –

-1

Im Falle eines Rückrufs von einem nonUi-Thread zu Ui-Thread können Sie runOnUiThread() (wie oben angegeben) oder Handler verwenden. Im Folgenden finden Sie ein Beispiel für die Verwendung von 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

Warum negativ ?? Erklären. – ADM

Verwandte Themen