Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – GCM网络管理器 – 周期性任务未触发大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用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 seconds
long flexSecs = 15L; // the task can run as early as -15 seconds from the scheduled time

String 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);

@L_522_3@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网络管理器 – 周期性任务未触发所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。