假设它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();
}
}