0

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

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

4

3 回答 3

1

可能你想要一个通用异步任务来执行长时间运行的任务,并且你想要一个回调机制来使用它,你可以通过将异步任务类作为一个单独的抽象并实现一个回调接口来实现相同的任务。 带回调的异步类

于 2013-03-13T10:23:45.713 回答
0

对的,这是可能的。

  1. 添加一个用于指示调用Activity的Parameter
  2. 查看 AsyncTask 方法 onPostExecute() 的 JavaDoc
于 2013-03-13T10:19:20.477 回答
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           
        }
    };
于 2013-03-13T10:31:10.963 回答