2015-07-13 71 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: 
    } 
} 



} 
相关问题