jka*_*001 6 android google-cloud-messaging android-jobscheduler
我正在尝试使用GcmNetworkManager在我的应用程序中安排定期任务,该任务运行到API级别17.我按照GCM网络管理器页面(https://developers.google.com/上的说明)设置了所有内容.云消息/网络管理员):
在我的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>
Run Code Online (Sandbox Code Playgroud)
在我的申请中,我有:
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);
Run Code Online (Sandbox Code Playgroud)
我有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;
}
}
Run Code Online (Sandbox Code Playgroud)
当我启动应用程序,我得到的onStartCommand记录为预期,但onRunTask不会被调用.我错过了什么吗?我期待,一旦启动(由启动命令触发证明),它应该每15-30秒运行一次 - 这是一个正确的假设吗?为什么不开火呢?
谢谢!
问题是你正在重写onStartCommand!这就是Google Play服务在GcmTaskService上执行任务的方式.如果你想让它简单地工作
return super.onStartCommand(intent, flags, startId);
Run Code Online (Sandbox Code Playgroud)
也许值得一提的是提供onRunTask的原因是你不必担心服务的生命周期 - 你可以依赖GcmTaskService的内部来在需要时停止服务.
也就是说,如果你使用自定义意图在你的GcmTaskService上启动Service(),你可能会搞砸了它,并最终得到一个应该没有停止的服务.
如果你确实需要调用GcmTaskService(不推荐),你应该绑定它 - 该接口完全不受GcmTaskService内部的影响.
| 归档时间: |
|
| 查看次数: |
6571 次 |
| 最近记录: |