gpt4 book ai didi

android - 强制 GcmTaskService 立即运行

转载 作者:太空狗 更新时间:2023-10-29 13:19:13 24 4
gpt4 key购买 nike

我正在尝试在没有 waiting the 30 seconds 的情况下启动 GcmTaskService .如果任务不成功,则它应遵循通常的 GcmTask 规则。

but to prevent abuse the scheduler will only set an alarm at a minimum of 30 seconds in the future. Your task can still be run earlier than this if some network event occurs to wake up the scheduler.

这行不通:

public static void start(Context context) {
context.startService(new Intent(context, FileDownloadService.class).setAction(
SERVICE_ACTION_EXECUTE_TASK));
}

我宁愿没有 2 个服务做完全相同的事情。

最佳答案

您不能在 GcmTaskService b/c 上启动服务,这是 Google Play 服务启动任务的方式。如果你绝对需要,你可以重写 onStartCommand() (当你完成检查 Intent 是否符合你的期望时,确保调用 super.onStartCommand )。如果你这样做,它看起来像

public int onStartCommand(...) {
if ("my.app.TRIGGER_TASK".equals(intent.getAction())) {
// run your task logic.
}
return super.onStartCommand(...);
}

也就是说,如果您在 onStartCommand 中运行您的任务,它将在您应用的主线程上运行您的任务,因此您不能执行任何阻塞 i/o。

此外,您可能会遇到以下问题:当 GcmTaskService 检测到先前执行的任务已完成时,它会自行调用 stopService()。

或者(并且更安全)您可以绑定(bind)到您的 GcmTaskService 足够长的时间来启动您的任务。您可以安全地在 Binder 线程上执行 onRunTask() 逻辑。您必须处理自己的同步。

关于android - 强制 GcmTaskService 立即运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31141157/

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