0

我正在使用 Asynctask 来执行一个耗时的方法,doStuff()其中包括分配全局数据结构。调试器确认doStuff()已调用,但在 Asynctask 结束时绘制新视图时,访问全局数据结构时出现空指针异常。这是代码:

public class MyTask extends AsyncTask<Void, Void, Void> {
    protected ProgressDialog dialog;

    public MyTask (Context context) {
        dialog = new ProgressDialog(context);
    }

    @Override
    protected void onPreExecute() { 
       super.onPreExecute();
       dialog.setMessage("Foo");
       dialog.show();    
    }

    @Override
    protected Void doInBackground(Void... params) {
        doStuff();
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        dialog.dismiss();
    }
}

我使用new MyTask(this).execute();.

4

2 回答 2

2

AsyncTask是一个真正方便的后台线程和处理程序包装器。您正在后台任务完成之前执行代码。要知道后台任务何时完成,您需要输入要执行的代码或以其他方式指示您的主要活动onPostExecute(它将在 UI/主线程上运行)任务完成。有关更多详细信息,请参阅进程和线程指南的使用 AsyncTask 部分。

于 2013-01-13T04:15:19.840 回答
0

您必须在使用 AsyncTask 的 Activity 中声明 ProgressDialog

于 2013-01-13T01:54:30.547 回答