有没有人知道如何轻松地将多个调用 AsyncTask 执行排列在队列中或其他地方,然后按顺序执行它们?
我希望所调用的异步任务在前一个任务完成后等待,但是似乎我无法实现这一点,即使我测试当前正在执行的任务的状态也不行。
有什么解决办法吗?我看到在蜂巢 API 中有一个方法 executeOnExecutor()
,其中包含一个 SERIAL_EXECUTOR
,我猜它实现了我所描述的功能。然而,我不是为蜂巢开发。
谢谢!
有没有人知道如何轻松地将多个调用 AsyncTask 执行排列在队列中或其他地方,然后按顺序执行它们?
我希望所调用的异步任务在前一个任务完成后等待,但是似乎我无法实现这一点,即使我测试当前正在执行的任务的状态也不行。
有什么解决办法吗?我看到在蜂巢 API 中有一个方法 executeOnExecutor()
,其中包含一个 SERIAL_EXECUTOR
,我猜它实现了我所描述的功能。然而,我不是为蜂巢开发。
谢谢!
// 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)
它的效果与广告宣传的一样。请求被很好地串行化了。服务在接收到请求时启动,最后一个请求处理完后停止。请求按先进先出的顺序进行处理。
我使用右键单击源包名称并选择New/Class来创建IntentService。我将IntentService用作超类。构造函数有一个名为“name”的参数。我将其更改为:
public XxxService() {super("XxxService");}
所有服务的代码都集中在onHandleIntent函数中。我不需要使用任何其他@ Override函数。
希望这就是你想要的...
注:变量"context"是在onReceive中传递的参数。我从代码中将XxxxService的名称更改为"Service"或"service"。最后,在我的所有项目中,我创建了一个名为GC的类。它是全局常量的容器类。GC.EXTRA_SERVICE_DATA是一个全局字符串,定义了额外的关键字。
Android版本大于Honeycomb的默认执行程序为串行执行程序。因此,如果您的min.SDK版本和目标SDK版本都大于12,则Asynctasks将根据其execute函数的调用执行。请参阅我的有关Asynctask的讨论
希望这能对您有所帮助...https://docs.google.com/document/d/1_zihWXAwgTAdJc013-bOLUHPMrjeUBZnDuPkzMxEEj0/edit?usp=sharing