其他分享
首页 > 其他分享> > android-多个AsyncTask的串行执行

android-多个AsyncTask的串行执行

作者:互联网

有谁知道如何轻松地将多个对AsyncTask执行的调用安排在队列或其他内容中,然后以串行方式执行它们?

我希望被调用的异步任务在完成之前等待一会儿,但是即使我测试了当前正在执行的任务的状态,我似乎也无法完成.

任何想法如何解决这个问题?我已经看到在蜂窝API中有一个带有SERIAL_EXECUTOR的executeExecuteExecutor()方法,我想它实现了我所描述的.但是,我不是为蜂窝开发的.

谢谢!

解决方法:

您可以尝试IntentService.从参考:

IntentService is a base class for Services that handle asynchronous requests (expressed as Intents) on demand. Clients send requests through startService(Intent) calls; the service is started as needed, handles each Intent in turn using a worker thread, and stops itself when it runs out of work.

我从广播接收机运行服务,如下所示:

    // Now let the service module do the rest

    Intent serviceIntent = new Intent(context, Service.class);
    serviceIntent.putExtra(GC.EXTRA_SERVICE_DATA, serviceData);
    ComponentName compName = context.startService(serviceIntent)

它按广告宣传工作.请求被序列化罚款.该服务在收到请求时启动.在处理完最后一个请求之后,该服务停止了.请求被处理为FIFO.

我通过右键单击源包名称并选择“新建/类”来创建了intentservice.我使用了intentservice作为超类.构造函数主张“名称”.我将其更改为:

    public XxxService() {super("XxxService");}

该服务的所有代码都放入onHandleIntent函数中.我不必使用任何其他@Override函数.

希望这就是你想要的…

注意:变量“上下文”是onReceive中传递的参数.我将代码中的名称从XxxxService更改为“ Service”或“ service”.最后,我在所有项目中都创建了一个称为GC的类.它是全局常量的容器类. GC.EXTRA_SERVICE_DATA是定义附加键的全局字符串.

标签:executor,android-asynctask,android-2-2-froyo,android
来源: https://codeday.me/bug/20191102/1990808.html