实现一个返回多个值的AsyncTask回调函数?

时间:2016-06-23 01:21:14

标签: android android-asynctask

我试图了解AsyncTask回调是如何工作的。这就是我的MainActivity到目前为止的样子:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    MyAsyncTask AsyncTask = new MyAsyncTask(arg1,arg2,arg3).execute();
}

这是我的AsyncTask类:

public class MyAsyncTask extends AsyncTask<String, Void, Result> {
    private AsyncListener listener;

    public MyAsyncTask(AsyncListener listener) {
        this.listener = listener;
    }

    public MyAsyncTask() {

    }

    @Override
    protected Result doInBackground(String... strings) {
        return null;
    }

    @Override
    public void onPostExecute(Result result) {
        listener.onTaskCompleted();
    }

    public interface AsyncListener{
        void onTaskCompleted();
    }
}

这只是我提出的骨架结构。我想实现我在AsyncTask中调用多个函数,比如使用SharedPreference设置应用启动计数器或初始化AdMob广告。实现这一目标的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

您的结构不完全正确,因为您在Activity使用中有3个参数,但您的AsyncTask应该是&#34;回调&#34;有一些结果的接口监听器。

例如

@Override
public void onPostExecute(Result result) {
    if (listener != null) {
        listener.onTaskCompleted(result);
    } 
}

因此,您需要更新接口方法以接受参数。

然后你需要传递一个接口的实现&amp;方法(或匿名类)到AsyncTask,然后你有一个回调。

关于调用多个方法,您可以对不同的任务使用多个回调,但这实际上取决于您的最终目标。