Android如何从runnable实现执行Async任务

时间:2012-06-28 05:48:14

标签: android multithreading android-asynctask runnable

文档说必须从UI线程调用execute()。但是,因为我每隔几秒钟更新一次图像,所以我使用的是Runnable。在那里,我定义了必须执行的操作。启动(execute())ASyncTask就是其中之一。但是,由于不应该从UI线程以外的任何东西调用ASyncTask,我该如何处理?

3 个答案:

答案 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
            }
        });
    }
};