2015-07-13 85 views
1

我正在使用AsyncTask類,但我將其用作公共類。我想在完成執行後運行一些代碼,但我無法弄清楚如何在課程之外進行操作。例如:public onPostExecute方法

exampleAsyncTaskClass.execute(params); 
//What can I write here to execute code after the AsyncTask is completed 

反正是有任務不使用保護onPostExecute方法完成後我可以執行代碼。或者有什麼方法可以使該方法不受保護?

+0

變化'protected'到'公共'?我不確定那會實現什麼。 – immibis

+0

您可以引入一些變量來檢查任務是否已完成.....如果(isfinished){//執行som ecode} – RajSharma

+0

@immibis:AsyncTask是內置類 – Horatio

回答

0

您可以將處理程序傳遞給您的任務的構造函數,並在任務完成時調用它。

看起來是這樣的:

public class SomeTask extends AsyncTask<Object, Object, Object>{ 

    private OnPostExecuteHandler handler; 

    public SomeTask(OnPostExecuteHandler handler) { 
     this.handler = handler; 
    } 

    @Override protected Object doInBackground(Object... params) { 
     return null; 
    } 

    @Override protected void onPostExecute(Object o) { 
     handler.runOnFinish(); 
    } 

    public interface OnPostExecuteHandler{ 
     void runOnFinish(); 
    } 
} 

與用法:

new SomeTask(new SomeTask.OnPostExecuteHandler() { 
    @Override public void runOnFinish() { 
     //will be called when the task is finished 
    } 
}).execute(someParams); 
+0

你能舉一個例子說明我如何從另一個班級訪問這個例子嗎? – Horatio

+0

@Horatio補充說。我建議你閱讀Java的基礎知識。然後才能深入Android開發。 – eleven

0

你可以做這樣的事情.....

public class Myclass{ 
boolean isTaskFinished; 
if(isfinsihed){ 
//execute some code 
} 

ExampleTask exampe=new ExampleTask(); 
example.execute; 



class ExampleTask extends AsyncTask<Object, Object, Object>{ 
private OnPostExecuteHandler handler; 

public ExampleTask (OnPostExecuteHandler handler) { 
    this.handler = handler; 
} 

@Override protected Object doInBackground(Object... params) { 
    return null; 
} 

@Override protected void onPostExecute(Object o) { 
    handler.runOnFinish(); 
} 

public interface OnPostExecuteHandler{ 
    void runOnFinish(); 
isFinished=true: 
    } 
} 



} 
相關問題