私は3つの活動A、B、Cを持っています。3 つのアクティビティすべてで、非同期タスクを使用しています。単一の非同期タスク (共通コード) ですべての非同期タスクを実行することは可能ですか。
可能であれば
1. どのタスクがどのアクティビティから呼び出されたかを確認する方法は?
2. タスクが完了したかどうかを確認する方法は?
私は3つの活動A、B、Cを持っています。3 つのアクティビティすべてで、非同期タスクを使用しています。単一の非同期タスク (共通コード) ですべての非同期タスクを実行することは可能ですか。
可能であれば
1. どのタスクがどのアクティビティから呼び出されたかを確認する方法は?
2. タスクが完了したかどうかを確認する方法は?
長時間実行されるタスクを実行するために使用できる共通の非同期タスクが必要で、これを使用するコールバック機構が必要な場合があります。非同期タスク クラスを別の抽象化してコールバック インターフェイスを実装することで、同じことを実装できます。 コールバックのある非同期クラス
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
}
};