gpt4 book ai didi

java - 两个不同的 AsyncTasks 无法从 foregroundService 启动

转载 作者:行者123 更新时间:2023-12-01 17:11:11 24 4
gpt4 key购买 nike

我编写了一个前台服务,它在 onCreate 方法中执行以下操作:

public void onCreate(){
//........
startForeground(id,notification);
Task1=new Task(this);
task1.execute();
Task2=new Task(this);
Log.d("T2","Created");
task2.execute();
Log.d("T2","Executed");
}

现在发生的情况是,上面的代码导致任务 1 执行(其中有一个 while(true),每个循环后 sleep 60 秒),但永远不会让任务 2 启动其 doInBackground()。

我不确定出了什么问题。根据 logcat,它清楚地表明 task2.execute() 确实被调用。但是为什么第二个任务的 doInBackground() 没有启动?我最初计划有两个前台服务,但在阅读了一些 SO 帖子后,决定在前台只提供一个服务,并让它有两个不同的 Asynctasks 在后台进行一些连续处理。请帮助我完成这项工作!

最佳答案

从 Honeycomb 开始,AsyncTask 的默认执行器是 AsyncTask.SERIAL_EXECUTOR,这意味着在给定时间只有一个任务正在执行。

如果需要并行性,只需使用AsyncTask.THREAD_POOL_EXECUTOR,即

task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);

而不仅仅是

task.execute(params);

请参阅 documentation for AsyncTask 中的执行顺序部分。 .

关于java - 两个不同的 AsyncTasks 无法从 foregroundService 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23768355/

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