Android AsyncTask – 执行顺序

前端之家收集整理的这篇文章主要介绍了Android AsyncTask – 执行顺序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在面对一个关于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之前执行,至少这是我需要的行为.

解决方法

确保两个线程(这是AsyncTasks基本上是这样)的唯一方法是按照你想要的顺序执行,是在第一个线程完成时启动第二个线程.

在你的情况下,为了保持实现抽象,并不需要在AsyncTask1的onPostExecute中实际调用AsyncTask2(Anup和Sanket建议的方式,如果要混合它们也是可以的),使AsyncTask1调用super.executeAsyncTask2(),其中executeAsyncTask2()是您的CustomActivity中启动第二个AsyncTask的方法

原文链接:https://www.f2er.com/android/312414.html

猜你在找的Android相关文章