AsyncTasks の実行順序に関する問題に直面しています。
私の質問は:
AsyncTask の 2 つの実装があると仮定します: MyAsyncTask1とMyAsyncTask2
次の方法で呼び出されます。
new MyAsyncTask1 ().execute ();
new MyAsyncTask2 ().execute ();
MyAsyncTask1 がMyAsyncTask2の前に実行されることは保証されていますか? 確かなことは、デフォルトのエグゼキューターであるSERIAL_EXECUTORが使用されているため、並列で実行されないことです。問題は実行の順序にあります: どちらが最初に実行されますか??
実行順序が決定されていない場合、AsyncTasks の実行順序を強制するにはどうすればよいですか??
私が必要とするのは、 MyAsyncTask2 の前にMyAsyncTask1を実行することです。これは、 MyAsyncTask2の前にMyAsyncTask1の execute を呼び出しているにもかかわらず、常にそうであるとは限りません。
私が実際に持っているのはカスタムアクティビティです:
public abstract class CustomActivity extends Activity {
@Override
protected void onCreate ( Bundle savedInstanceState ) {
super.onCreate ( savedInstanceState );
new MyAsyncTask2 ().execute ();
}
}
そして、カスタム アクティビティから継承する別のアクティビティ:
public class MainActivity extends CustomActivity {
@Override
protected void onCreate ( Bundle savedInstanceState ) {
new MyAsyncTask1 ().execute ();
super.onCreate ( savedInstanceState );
}
}
したがって、MainActivityを使用する場合、MyAsyncTask1はMyAsyncTask2の前に実行する必要があります。少なくともそれが必要な動作です。