我正在调用Asynctask并且在完成doInBackground(String ... arg0)之后我想在onPostExecute()方法中调用onResume()。
答案 0 :(得分:2)
您不应该显式调用活动生命周期方法,它们通常调用基类版本 - 即。 super.onResume(),所以你可能会搞乱活动状态。而是将相关代码从onResume移动到某个外部函数,并在onPostExecute中调用此函数。
答案 1 :(得分:1)
Afte AsyncTask Complete 将此行放在onPostExecute()
中notifyDataSetChanged();
这将自动调用onResume()
或如果这不是工作,则调用对话框。 当对话框打开时活动gosein onPause() 当DialogBox关闭时,它将调用onResume() 这将有效
答案 2 :(得分:0)
只需调用Activity.this.onResume();在你的后期执行方法
答案 3 :(得分:0)
1.首先,您需要通过执行此操作来参考您的活动,并在您的asynkTask类中说出MainActivity。 MainActivity活动=(MainActivity)上下文。 context是从活动中调用asynktask类时传递的变量。 2.现在你可以轻松打电话。 activity.onResume()。
答案 4 :(得分:0)
为什么你需要这样做?
如果您的异步任务是嵌套类,则直接调用方法。
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();
}
}
}
如果你是OOP的忠实信徒并且喜欢干净的代码:) ..我使用这种方法
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();
}
}