4
A
回答
2
如果你需要做的异步操作,那么考虑的AsyncTask - 这就是你在执行你的长期运行和在执行onPostExecute方法是假设更新UI代码实现doInBackground类。
现在,如果你想通过一些特殊的代码添加到您的AsyncTask长时间操作后进行,您可以:
(1)通行证,将你的活动/片段,当然可以实现的接口:
// Psedocode to reduce size!
interface MyInterface {
void doWork();
};
class MyAsyncTask extends AsyncTask<Void,Void,Void> {
MyInterface oper;
public MyAsyncTask(MyInterface op) { oper = op; }
// ..
public onPostExecute(Void res) {
oper.doWork(); // you could pass results here
}
}
class MyActivity extends Activity implements MyInterface {
public void doWork() {
// ...
}
public void startWork() {
// execute async on this
new MyAsyncTask(this).execute();
// or execute on anynomous interface implementation
new MyAsyncTask(new MyInterface() {
public void doWork() {
//MyActivity.this.updateUI() ...
}
});
}
};
(2)使用local broadcast receivers,EventBus,但这些是更重的解决方案。
(3)如果你已经有一定的回调接口在你backgroung工人代码,那么你可以把它使用此代码在UI线程中执行:?在Java中完成处理]
// This can be executed on back thread
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// do work on UI
}
});
相关问题
- 1. 完成处理程序内的完成处理程序?
- 2. 完成处理程序Android Kotlin
- 3. 等待处理程序完成Android
- 4. 等待完成处理程序完成
- 5. 完成处理程序AFNetworking
- 6. 完成处理程序? async_dispatch?
- 7. AVSpeechUserrance完成处理程序
- 8. Swift中的完成处理程序
- 9. Java中的完成处理程序?
- 10. 如何处理完成处理程序块中取消的NSURLSessionTask?
- 11. swift的完成处理程序
- 12. moveRowAtIndexPath的完成处理程序?
- 13. ThemeTransitions的完成处理程序
- 14. 实现backgroundSession.uploadTask的完成处理程序
- 15. 带完成处理程序的函数,何时执行完成?
- 16. 如何取消完成处理程序?
- 17. 客观c完成处理程序
- 18. 完成处理程序异步
- 19. NSURLSession完成处理程序非常慢
- 20. iOS:UIBackgroundFetchResult块内完成处理程序
- 21. 完成处理程序不叫
- 22. 迅速完成处理程序语法
- 23. Swift - 复制完成处理程序
- 24. 完成处理程序问题
- 25. 查找完成声明处理程序
- 26. 夫特完成处理程序
- 27. boost.asio:async_read/async_write完成处理程序订购
- 28. Swift通用完成处理程序
- 29. 解析嵌套完成处理程序
- 30. Swift @escaping和完成处理程序
的可能的复制(HTTP ://stackoverflow.com/questions/22077960/completion-handlers-in-java) – yennsarah