假设它TestAsyncTask
是 an 的内部类Activity
,那么您可以使用活动名称.this
来获取上下文。如果 TestAsyncTask 不是内部类,那么您将需要将您的实例传递Activity
给构造函数,以便您可以将其作为Context
方法提供ProgressDialog.show()
。
这是内部类方法的示例:
class MyActivity extends Activity {
//Activity Lifecycle methods
class TestAsynTask extends AsyncTask<Void, Void, Void> {
ProgressDialog dialog;
@Override
protected void onPreExecute() {
dialog = ProgressDialog.show(MyActivity.this, "title", "message");
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
//very long computation...
return null;
}
@Override
protected void onPostExecute(Void void) {
dialog.cancel();
}
}
}
您会注意到您应该将 保存ProgressDialog
到方法中的实例变量并在onPreExecute()
方法中调用cancel()
它onPostExecute()
。
另一种方法看起来相似:
class MyActivity extends Activity {
//Activity Lifecycle methods
}
class TestAsynTask extends AsyncTask<Void, Void, Void> {
ProgressDialog dialog;
MyActivity activity;
TaskAsynTask(MyActivity activity) {
this.activity = activity;
}
@Override
protected void onPreExecute() {
dialog = ProgressDialog.show(activity, "title", "message");
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
//very long computation...
return null;
}
@Override
protected void onPostExecute(Void void) {
dialog.cancel();
}
}