Asynctask with Progressdialog



我正在使用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();从多个活动执行Asynctask。

AsyncTask实际上是一个围绕后台线程和处理程序的方便包装器。在后台任务完成之前执行代码。要知道后台任务什么时候完成,你需要把你想要执行的代码或者在onPostExecute(它将在UI/主线程上运行)中通知你的主活动任务已经完成。要了解更多细节,请参阅进程和线程指南中的使用AsyncTask一节。

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

相关内容

  • 没有找到相关文章

最新更新