gpt4 book ai didi

android - 防止启动 GcmTaskService 两次

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

我创建了一个非常简单的服务来更新服务器上的用户位置:

public class LocationSchedulerService extends GcmTaskService {

@Override
public int onRunTask(TaskParams taskParams) {
// Update to server stuff

return GcmNetworkManager.RESULT_SUCCESS;
}
}

我创建了一个简单的 BootBroadcastReceiver 来在设备启动时启动服务:

PeriodicTask task = new PeriodicTask.Builder()
.setTag("LocationSchedulerService")
.setService(LocationSchedulerService.class)
.setPeriod(LOCATION_UPDATE_PERIOD * 60)
.setFlex(LOCATION_UPDATE_FLEX * 60)
.setPersisted(false)
.setRequiredNetwork(Task.NETWORK_STATE_CONNECTED)
.setRequiresCharging(false)
.setUpdateCurrent(true)
.build();

GcmNetworkManager.getInstance(context).schedule(task);

现在我的问题是:

由于不可能知道用户何时安装了软件包,我也想在用户启动应用程序时启动此任务。但是如何防止任务运行两次?

我阅读了 setUpdateCurrent 的文档但我不确定功能。这是否意味着当前正在运行的服务将被取消,或者这正是我想要的?

最佳答案

从文档看来,调用 setUpdateCurrent(true) 会使用相同的标签更新您的 PeriodicTask 的调度约束。

Optional setter to specify whether this task should override any preexisting tasks with the same tag. This defaults to false, which means that a new task will not override an existing one.

您实际上也可以在使用 GcmNetworkManager.cancelTask() 安排新任务之前取消您的 Task

关于android - 防止启动 GcmTaskService 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30619582/

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