2011-04-25 2 views
0

하나의 비동기 작업이 발생하는 문제에 직면하고 있지만, GUI (진행률 표시 줄 업데이트)의 다른 부분을 변경할 때마다 두 번 사용해야합니다.Android 비동기 작업 - 어떤 활동에서이를 유발 했습니까?

if-else 절을 ​​결정하는 방법이 있습니까? 어떤 활동이 호출하고 둘 다 각각에 대해 적절한 함수를 작성합니까?

편집 : 응, 대답은 여기에 있었다 지금

감사

답변

2

당신은 그것에서 시작 활동/컨텍스트가 포함 된 멤버 변수를 저장할 수 ... 없다.

//pseudocode 
if (mActivity instanceof MyActivity) { 
    // .... 
} else { 
    // .... 
} 
0

은 AsyncTask를 구현에서 코드를 추출하고 위임 활동에 그 : doInBackground 내부

//pseudocode 
AsyncTask task = new AsyncTask(); 
task.mActivity = this; 
task.execute(); 

는 활동을 확인합니다. 예 :

public interface MyDelegate { 
    public void updateProgress(....) 
} 

귀하의 AsyncTask를 대리자 소요를 호출 할 때 appropiate :

public class MyActivity extends Activity implements MyDelegate { 
    public void updateProgress(...) { 
     // update ui 
    } 

    // somewhere in your code: 
    new MyAsyncTask(this).execute(...); 
} 
:

public class MyAsyncTask .... { 
    public MyAsyncTask(MyDelegate myDelegate) { ... } 

    // somewhere in your code (probably onProgressUpdate) 
    myDelegate.updateProgress(...) 
} 

귀하의 활동/이거는/s의 대리자를 구현