假设TestAsynctask
是 Accessity
的内层, 那么您就可以使用活动名称 . this
来获取上下文。 如果TestAsynctask不是一个内层, 那么您会想要将您的 Assynctask
实例传递给构建者, 以便您能够将它作为 的 Context
提供给 < a href=> http://developer.android.com/android/app/app/regationDialog.html#show% 28android. content. Context,%20java.lang.Charsequecce,% 20java.lang.Charconcent%29" rel="\nofol_code> areDrevicol> a Revicdoog. 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();
}
}
}
您会注意到, 您应该将 < code> ProgressDialog code > 保存到 on Preecute ()
方法中的一个实例变量上, 并在 on PostExecute ()
方法中将 < code> 调用到该变量上, 并在 on PostExecut ()
方法中调用 < code> < cancel () 。
另一种方法看起来相似:
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();
}
}