文档说明必须从UI线程调用execute()。但是,由于我每隔几秒钟更新图像,所以我正在使用一个Runnable。在其中,我定义了需要执行的操作。其中之一是启动(execute())ASyncTask。但是,由于ASyncTask不应该从除UI线程以外的任何地方调用,我该如何继续?
文档说明必须从UI线程调用execute()。但是,由于我每隔几秒钟更新图像,所以我正在使用一个Runnable。在其中,我定义了需要执行的操作。其中之一是启动(execute())ASyncTask。但是,由于ASyncTask不应该从除UI线程以外的任何地方调用,我该如何继续?
只需在Runnable中添加runOnUiThread,即可启动AsyncTask:
private Runnable updateImages= new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
// call your asynctask here
}
}
});
//////YOUR CODE HERE
}
AsyncTask
而不是Runnable
。我不确定AsyncTask
是否也喜欢这种行为,但我之前曾更改过一些AsyncTasks
中的UI内容。给你。
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
}
});
}
};
runOnUiThread
也是在UI线程上实现的。runOnUiThread
是Activity类的方法,而不是任何线程的方法。我建议使用runOnUiThread
,因为它很容易实现。 - ρяσѕρєя KrunOnUiThread
或从runOnUiThread
更新UI方面遇到任何问题,请告诉我,我会尽力帮助你。谢谢。 - ρяσѕρєя K