android – GCM网络管理器 – 周期性任务未触发

android – GCM网络管理器 – 周期性任务未触发,第1张

概述我正在尝试使用GcmNetworkManager在我的应用程序中安排定期任务,该任务运行到API级别17.我已按照GCM网络管理器页面( https://developers.google.com/cloud-messaging/network-manager)中的说明设置了所有内容: 在我的AndroidManifest.xml中,我有: <service android:name=". 我正在尝试使用GcmNetworkManager在我的应用程序中安排定期任务,该任务运行到API级别17.我已按照GCM网络管理器页面( https://developers.google.com/cloud-messaging/network-manager)中的说明设置了所有内容:

在我的AndroIDManifest.xml中,我有:

<service    androID:name=".services.MyService"    androID:exported="true"    androID:permission="com.Google.androID.gms.permission.BIND_NETWORK_TASK_SERVICE">    <intent-filter>        <action androID:name="com.Google.androID.gms.gcm.ACTION_TASK_READY"/>    </intent-filter></service>

在我的申请中,我有:

long periodSecs = 30L; // the task should be executed every 30 secondslong flexSecs = 15L; // the task can run as early as -15 seconds from the scheduled timeString tag = "myScan|1";PeriodicTask periodic = new PeriodicTask.Builder()        .setService(MyService.class)        .setPeriod(periodSecs)        .setFlex(flexSecs)        .setTag(tag)        .setPersisted(false)        .setrequiredNetwork(com.Google.androID.gms.gcm.Task.NETWORK_STATE_ANY)        .setRequiresCharging(false)        .setUpdateCurrent(true)        .build();GcmNetworkManager.getInstance(this).schedule(periodic);

我有MyService,看起来像:

public class MyService extends GcmTaskService {    @OverrIDe    public int onRunTask(TaskParams taskParams) {        Log.info("onRunTask: " + taskParams.getTag());        return GcmNetworkManager.RESulT_SUCCESS;    }    @OverrIDe    public int onStartCommand (Intent intent,int flags,int startID) {        Log.info("onStartCommand");        return GcmTaskService.START_STICKY_COMPATIBIliTY;    }}

当我启动应用程序时,我按预期记录onStartCommand,但onRunTask永远不会被调用.我错过了什么吗?我期待,一旦启动(由启动命令触发证明),它应该每15-30秒运行一次 – 这是一个正确的假设吗?为什么不开火呢?

谢谢!

解决方法 问题是你正在重写onStartCommand!这就是Google Play服务在GcmTaskService上执行任务的方式.
如果你想让它简单地工作
return super.onStartCommand(intent,flags,startID);

也许值得一提的是提供onRunTask的原因是你不必担心服务的生命周期 – 你可以依赖GcmTaskService的内部来在需要时停止服务.

也就是说,如果你使用自定义意图在你的GcmTaskService上启动Service(),你可能会搞砸了它,并最终得到一个应该没有停止的服务.

如果你确实需要调用GcmTaskService(不推荐),你应该绑定它 – 该接口完全不受GcmTaskService内部的影响.

总结

以上是内存溢出为你收集整理的android – GCM网络管理器 – 周期性任务未触发全部内容,希望文章能够帮你解决android – GCM网络管理器 – 周期性任务未触发所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1145338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存