Вызов метода onResume() из метода OnPostExecute() Asynctask
Я звоню Asynctask и после завершения doInBackground(String... arg0) я хочу вызвать onResume() в методе onPostExecute().
5 ответов
После AsyncTask Complete поместите эту строку в onPostExecute()
notifyDataSetChanged();
Это вызовет onResume() автоматически
или если это не работа, тогда вызовите диалоговое окно. когда в диалоговом окне открывается действие gosein onPause() и когда DialogBox закрывается, он вызывает onResume(), это будет работать
Вы не должны явно вызывать методы жизненного цикла активности, они обычно вызывают версии базового класса - т.е. super.onResume(), так что вы можете связываться с состоянием активности. Вместо этого переместите связанный код из onResume в некоторую внешнюю функцию и вместо этого вызовите эту функцию в вашем onPostExecute.
1. Прежде всего, вам нужно сослаться на свою активность, скажем MainActivity, в своем классе asynkTask. MainActivity Activity=(MainActivity) контекст. context - это переменная, которую вы передаете во время вызова класса asynktask из вашей деятельности. 2. Теперь вы можете легко позвонить, сделав это. activity.onResume().
Просто вызовите Activity.this.onResume(); на ваш метод после выполнения
Зачем тебе это нужно?
если ваша асинхронная задача является вложенным классом, просто вызовите метод напрямую.
public MainActivity extends Activity{
//all the usual functionalities
public void methodAfterAsyncTask(){
//do stuff here
}
private CustomAsyncTask extends AsyncTask<Void,Void,Void>{
@Override
public onPostExecute(){
super.onPostExecute();
methodAfterAsyncTask();
}
}
}
Если вы сторонник ООП и любите чистый код:).. Я использую этот метод
MainActivity.java
public MainActivity extends Activity{
//all the usual functionalities
public void onResume(){
super.onResume();
new CustomAsyncTask(new AsyncListener(){
public void postTaskMethod(){
//do stuff here
}
}).execute();
}
}
AsyncListener.java
public interface AsyncListener{
void postTaskMethod();
}
CustomAsyncTask.java
publicCustomAsyncTask extends AsyncTask<Void,Void,Void>{
private AsyncListener listener;
public CustomAsyncTask(AsyncListener listener){
this.listener=listener;
}
@Override
public onPostExecute(){
super.onPostExecute();
if(null!=listener)
listener.postTaskMethod();
}
}