Я столкнулся с проблемой относительно порядка извлечения AsyncTasks.
Мой вопрос:
Предполагая, что у меня есть 2 реализации AsyncTask: MyAsyncTask1 и MyAsyncTask2
Они вызываются следующим образом:
new MyAsyncTask1 ().execute ();
new MyAsyncTask2 ().execute ();
Гарантируется ли, что MyAsyncTask1 выполняется до MyAsyncTask2? Одно точно, они не выполняются параллельно, поскольку используется исполнитель по умолчанию, который SERIAL_EXECUTOR. Проблема заключается в порядке выполнения: который будет выполнен первым?
Если порядок выполнения не определен, как я могу принудительно выполнить порядок выполнения для AsyncTasks?
Мне нужно, чтобы MyAsyncTask1 выполнялся до MyAsyncTask2, что не всегда так, но я вызываю execute для MyAsyncTask1 до MyAsyncTask2.
То, что у меня действительно есть, - это настраиваемая деятельность:
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, по крайней мере, это то, что мне нужно.