TestAsyncTask
Если предположить, что это внутренний класс к 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();
}
}