该文档说明必须从UI线程调用execute()。但是,由于每隔几秒更新一次图像,我正在使用Runnable。在那里,我定义了必须执行的操作。开始(执行())ASyncTask就是其中之一。但是,由于ASyncTask不应该从UI线程以外的其他任何地方调用,我该如何继续?Android如何实现可运行的异步执行任务
3
A
回答
5
只需添加runOnUiThread在Runnable接口启动的AsyncTask:
private Runnable updateImages= new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
// call your asynctask here
}
}
});
//////YOUR CODE HERE
}
1
可能重新设计您的项目只能使用AsyncTask
s而不是Runnable
。我不确定AsyncTask
如何喜欢这种行为,但我之前更改过一些AsyncTasks中的UI。
0
你在这里。
private Handler mHandler = new Handler(Looper.getMainLooper());
private Runnable updateImages= new Runnable() {
public void run() {
.........
.........
.........
mHandler.post(new Runnable() {
public void run() {
call your asynctask here
}
});
}
};
+0
但它不是在主线程上。这有效吗?这与文件所述相反。 – Namratha
相关问题
- 1. 异步任务从api的异步任务不运行异步
- 2. ANR执行异步任务
- 3. 异步任务不执行
- 4. 如何多次执行异步任务?
- 5. 串行执行其他异步任务后执行异步任务
- 6. android 2异步任务运行pirellarly
- 7. Android - 在AsyncTask中运行异步任务
- 8. 如何改善运行异步任务
- 9. 我应该实现异步并行还是异步任务
- 10. 并行运行异步任务
- 11. Spring MVC异步任务同步运行
- 12. Android异步任务停止运行几次后运行
- 13. 执行片段中的异步任务
- 14. Android:在异步任务中使用可运行时出错
- 15. AsyncTask android异常(无法执行任务:任务已执行)
- 16. 异步传播异步运行异步任务
- 17. 错误执行异步任务
- 18. Rails执行任务异步控制器
- 19. 异步任务按顺序执行?
- 20. 多个异步任务执行
- 21. Web园执行异步任务
- 22. Wifi p2p - 无法执行异步任务
- 23. 装载机不执行任务异步
- 24. 执行异步任务时出错
- 25. 在异步任务后执行jquery
- 26. ASP.NET异步任务执行序列
- 27. 多个异步任务执行
- 28. 异步任务doInBackground没有执行
- 29. 执行方法异步任务
- 30. Asyncio不会异步执行任务
你几乎不得不把runOnUiThread放在一个有条件的地方,否则会减慢你的整个程序 –
+1我会用'runOnUiThread()' –
我可以做一个sendMessage而不是runOnUiThread,然后由于Handler在UI上实现线程,我将处理该消息,即在那里启动ASyncTask。 – Namratha