2014-12-31 2 views
1

Asynctask를 호출하고 doInBackground (String ... arg0)를 호출 한 후 onPostExecute() 메서드에서 onResume()을 호출하려고합니다.Asynctask의 onPostExecute() 메서드에서 onResume() 메서드를 호출하십시오.

+4

망가 호출 활동 수명주기 방법을 작동합니다 그것 .. –

+0

'ActivityName.this.onResume(); '으로 메소드 호출하기 –

+1

Activity 라이프 사이클 메소드를 호출하는 것은 좋지 않다. – PPD

답변

1

완료 AsyncTask를 Afte onPostExecute에서이 줄을 넣어()

notifyDataSetChanged(); 

이 onResume()를 호출를 automaticly

하거나 다음 작업 대화 상자를 호출하지 않은 경우

. 때 대화 상자가 열려 onPause() 를 gosein 활동 및 대화 상자는이 onResume() 를 호출 근접 할 때이 별도의 방법 및 호출에 onResume의 코드 own..make 당신에

2

명시 적으로 활동 라이프 사이클 메소드를 호출하면 안됩니다. 일반적으로 기본 클래스 버전을 호출합니다. super.onResume(), 그래서 당신은 활동 상태로 엉망이 될 수도 있습니다. 대신 관련 코드를 onResume에서 외부 함수로 이동하고 onPostExecute에서이 함수를 호출하십시오.

0

Activity.this.onResume(); postexecution method

0

1. 먼저 자신의 액티비티에 대해 asinkTask 클래스에서 MainActivity라고 언급해야한다. MainActivity 활동 = (MainActivity) 컨텍스트. 컨텍스트는 활동에서 asynktask 클래스를 호출하는 동안 전달하는 변수입니다. 2.이 작업을 통해 쉽게 전화를 걸 수 있습니다. activity.onResume().

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(); 
     } 
    } 
관련 문제