从Asynctask的onPostExecute()方法调用onResume()方法

时间:2014-12-31 10:17:57

标签: android android-asynctask onresume

我正在调用Asynctask并且在完成doInBackground(String ... arg0)之后我想在onPostExecute()方法中调用onResume()。

5 个答案:

答案 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();
        }
    }