Я работал над приложением, и мне удалось заставить AsyncTask
нормально работать, когда он находится во внутреннем классе.
Теперь я выполняю рефакторинг кода, чтобы AsyncTask
находился в отдельном классе, но мне интересно, как мне убить ProgressDialog
и начать новую операцию после успешного завершения задачи? Я попытался запустить новое действие в методе onPostExecute(..)
, но я знаю, что это не сработает.
Передача активности потока моего пользовательского интерфейса в качестве аргумента в конструкторе AsyncTask, похоже, не работает:
//In UI Thread I had
public class Test101 extends Activity {
private Button btnLogin;
private LoginTask mLoginTask;
private Context context=this;
private Test101 mTest101;
mLoginTask=new LoginTask(context,mTest101);
mLoginTask.execute(null);
// In the AsyncTask I had
Activity mParentActivity;
public LoginTask(Context context,Activity act){
this.ctx=context;
this.mParentActivity=act;
}
onPostExecute(..){
mParentActivity.callSomeMethod();
}
...
}
Я продолжал получать NullPointerException
, может быть, я что-то упустил, но это не сработало для меня.