我面临一个关于 AsyncTasks 执行顺序的问题。
我的问题是:
假设我有 2 个 AsyncTask 实现:MyAsyncTask1和MyAsyncTask2
以下列方式调用:
new MyAsyncTask1 ().execute ();
new MyAsyncTask2 ().execute ();
是否保证MyAsyncTask1在MyAsyncTask2之前执行?可以肯定的一件事是,它们没有并行执行,因为使用了默认执行程序,即SERIAL_EXECUTOR。问题在于执行顺序:哪个会先执行??
如果未确定执行顺序,如何强制执行 AsyncTasks 的执行顺序?
我需要的是在MyAsyncTask2之前执行MyAsyncTask1,尽管我在MyAsyncTask2之前调用MyAsyncTask1的执行,但情况并非总是如此。
我实际上拥有的是一个自定义活动:
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之前执行,至少这是我需要的行为。