Вызов метода 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();
        }
    }
Другие вопросы по тегам