gpt4 book ai didi

android - 多个 AsyncTasks 的串行执行

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:20 25 4
gpt4 key购买 nike

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

我希望被调用的异步任务在它完成之前等待,但似乎我无法完成此任务,即使我测试了当前正在执行的任务的状态。

有什么解决办法吗?我已经看到在 hive API 中有一个方法 executeOnExecutor() 和一个 SERIAL_EXECUTOR,我猜它实现了我所描述的。但是,我不是为 honeycomb 开发的。

谢谢!

最佳答案

您可以尝试 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 处理。

我通过右键单击源包名称并选择 New/Class 创建了 intentservice。我使用 intentservice 作为父类(super class)。构造函数有一个“名称”的论点。我将其更改为:

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

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

希望这就是你想要的......

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

关于android - 多个 AsyncTasks 的串行执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6890704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com