文档说必须从UI线程调用execute()。但是,因为我每隔几秒钟更新一次图像,所以我使用的是Runnable。在那里,我定义了必须执行的操作。启动(execute())ASyncTask就是其中之一。但是,由于不应该从UI线程以外的任何东西调用ASyncTask,我该如何处理?
答案 0 :(得分:5)
只需在Runnable中添加runOnUiThread即可启动AsyncTask:
private Runnable updateImages= new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
// call your asynctask here
}
}
});
//////YOUR CODE HERE
}
答案 1 :(得分:1)
可能会重新设计您的项目,仅使用AsyncTask
而不是Runnable
。我不确定AsyncTask
如何喜欢这种行为,但我之前在AsyncTasks中更改了一些UI内容。
答案 2 :(得分: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
}
});
}
};