1

GcmNetworkManager用来运行定期同步任务以将数据推送到我的服务器。但是,在发布应用程序后,我注意到在某些手机中,从不调用周期性任务。我已经调试了该应用程序是其中一些手机,并没有发现任何异常,当我安排任务时没有任何错误或日志,但它们根本不会被调用。

我的大多数用户都有Infinix手机。

有什么想法可能是造成这种情况的根本原因吗?

这是我安排任务的代码:

  Task task = new PeriodicTask.Builder()
            .setService(mClazz)
            .setPeriod(TimeUnit.MILLISECONDS.toSeconds(period))
            .setFlex(TimeUnit.MILLISECONDS.toSeconds(period / 5))
            .setTag(TAG_SYNC)
            .setUpdateCurrent(true)
            .setRequiredNetwork(Task.NETWORK_STATE_CONNECTED)
            .build();

    mGcmNetworkManager.schedule(task);
4

1 回答 1

0

在使用GcmNetworkManager类时,

要从调度程序接收任务已准备好执行的通知,您的客户端应用程序必须GcmTaskService在 action 上实现一个和过滤器SERVICE_ACTION_EXECUTE_TASK

同样,基于GcmTaskService,您的实现应该调用super.onStartCommand(),否则您的任务将无法正确启动。

除此之外,此 SO 帖子中给出的解决方案 - GCM 网络管理器 - 不触发定期任务也可能有所帮助。

快乐编码!

于 2016-09-28T07:38:30.993 回答