0

私は3つの活動A、B、Cを持っています。3 つのアクティビティすべてで、非同期タスクを使用しています。単一の非同期タスク (共通コード) ですべての非同期タスクを実行することは可能ですか。

可能であれば
1. どのタスクがどのアクティビティから呼び出されたかを確認する方法は?
2. タスクが完了したかどうかを確認する方法は?

4

3 に答える 3

1

長時間実行されるタスクを実行するために使用できる共通の非同期タスクが必要で、これを使用するコールバック機構が必要な場合があります。非同期タスク クラスを別の抽象化してコールバック インターフェイスを実装することで、同じことを実装できます。 コールバックのある非同期クラス

于 2013-03-13T10:23:45.713 に答える
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 に答える