可以在单个异步任务中运行多个任务吗?

时间:2013-03-13 10:13:38

标签: android android-asynctask android-activity

我有3个活动A,B,C。在我正在使用异步任务的所有3个活动中。是否可以在单个异步任务(公共代码)下运行所有​​异步任务。

如果可能的话 1.如何检查从哪个活动调用哪个任务?
2.如何检查任务是否完成?

3 个答案:

答案 0 :(得分:1)

可能你想拥有一个Common Async任务,可以用来执行长时间运行的taks,你想要一个回调机制来使用它, 您可以通过将异步任务类作为单独的抽象并通过实现回调接口来实现相同的功能。 Async Class with callback

答案 1 :(得分:0)

是的,这是可能的。

  1. 添加用于指示调用活动的参数
  2. Look at JavaDoc of AsyncTask method onPostExecute()

答案 2 :(得分:0)

创建AsyncTask类

public class MyTask extends AsyncTask<Void, Void, Void>
{

    // Use a WeakReference instead of holding the Activity object
    private WeakReference<Activity> mActivity;

    public MyTask(Activity activity)
    {
        mActivity = new WeakReference<Activity>(activity);
    }

    @Override
    protected Void doInBackground(Void... params)
    {
        // do common work
        return null;
    }

    public Activity getActivity()
    {
        return mActivity.get();
    }

    public void setActivity(Activity activity)
    {
        mActivity = new WeakReference<Activity>(activity);
    }

}

在每个活动中:

MyTask t = new MyTask(YourActivity.this)
    {
        @Override
        protected void onPostExecute(Void result)
        {
            super.onPostExecute(result);
            // do some work when finished           
        }
    };