Ich benutze Runnable, um einige Hintergrundaufgaben inmeine Android-Anwendung. Der Runable kann nach Abschluss der Hintergrundaufgabe einen Callback aufrufen, der vom Aufrufer der Funktion, die Runable implementiert hat, implementiert wird. Nun möchte ich die Ausführung an den Haupt-Thread übergeben, sobald der Callback aufgerufen wird.
public void DoInBackground(Callback callback)
{
Thread thread = new Thread(new Runnable(){
//Execution that to be done in background
//calling callback once the result is obtained
});
thread.start()
}
public void callee(){
DoInBackground(new callback(){
@Override
public void onSuccess(int value){
//Do operations after completion of background task
}
});
}
Ich möchte, dass onSucess auf dem Haupt-Thread ausgeführt wird und nicht auf der neuen ausführbaren Funktion, die in der DoInBackground-Funktion erstellt wurde. Ich weiß, dass es mit einer asynchronen Aufgabe erledigt werden kann. Gibt es eine andere Möglichkeit, dies zu tun?
Antworten:
1 für die Antwort № 1Sie können eine verwenden Handler
zu post
ein lauffähig in der UI-Thread-Warteschlange, oder wenn der Kontext die Aktivität ist, können Sie die verwenden runOnUiThread
Methode. Das Snippet im Runable wird auf dem UI-Thread ausgeführt
0 für die Antwort № 2
Fügen Sie Ihre Callback-Funktion in die Funktion runOnUiThread ein:
runOnUiThread(new Runnable() {
@Override
public void run() {
// callback function
}
});