Аз съм с Runnable да направя някои фонова задача вмоето приложение за Android. Стартиращият след приключване на задачата на заден план може да се обади на обратно повикване, което се изпълнява от повикващия на функцията, която изпълнява задача за изпълнение. Сега искам да предам изпълнение на главната нишка, след като се обади обратно.
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
}
});
}
Искам onSucess да работи на основната нишка, а не на новите runnable, създадени във функцията DoInBackground. Знам, че може да се направи с async задача. Има ли друг начин да го направите.
Отговори:
1 за отговор № 1можете да използвате Handler
да се post
работещ в опашката на потребителския интерфейс или ако контекстът е активността, която можете да използвате runOnUiThread
метод. Фрагментът в подлежащата на изпълнение програма ще бъде пуснат на UI Thread
0 за отговор № 2
поставете функцията за обратно повикване в функцията runOnUiThread:
runOnUiThread(new Runnable() {
@Override
public void run() {
// callback function
}
});