JobIntentService 不调用 OnHandleWork
JobIntentService not call OnHandleWork
我用静态方法 enqueueWork.
自定义了 JobIntentService
public static void enqueueWork(@NonNull Context context, @NonNull Intent intent) {
enqueueWork(context, MyJobIntentService.class, JOB_ID, intent);
}
我还定制了 FirebaseMessagingService 的实现。当我收到来自 FCM 的推送通知时,我调用 JobIntentService.[=13 的 enqueueWork =]
MyJobIntentService.enqueueWork(context, new Intent());
但方法 OnHandleWork 未在 Android 8.0 和更高版本 上调用。
我的 manifest.xml.
<service android:name="com.company.MyJobIntentService"
android:permission="android.permission.BIND_JOB_SERVICE" />
您知道它为什么不能正常工作吗?谢谢。
没有错误。不幸的是,JobIntentService 不会 运行 在 Android 8.0 及更高版本上立即生效。
When running as a pre-O service, the act of enqueueing work will generally start the service immediately, regardless of whether the device is dozing or in other conditions. When running as a Job, it will be subject to standard JobScheduler policies for a Job with a setOverrideDeadline(long) of 0: the job will not run while the device is dozing, it may get delayed more than a service if the device is under strong memory pressure with lots of demand to run jobs.
测试的时候,我新建一个空项目,调用的时候运行马上,但是当我在一个真正复杂的项目中使用的时候,调用之后运行几分钟。
我用静态方法 enqueueWork.
自定义了 JobIntentServicepublic static void enqueueWork(@NonNull Context context, @NonNull Intent intent) {
enqueueWork(context, MyJobIntentService.class, JOB_ID, intent);
}
我还定制了 FirebaseMessagingService 的实现。当我收到来自 FCM 的推送通知时,我调用 JobIntentService.[=13 的 enqueueWork =]
MyJobIntentService.enqueueWork(context, new Intent());
但方法 OnHandleWork 未在 Android 8.0 和更高版本 上调用。 我的 manifest.xml.
<service android:name="com.company.MyJobIntentService"
android:permission="android.permission.BIND_JOB_SERVICE" />
您知道它为什么不能正常工作吗?谢谢。
没有错误。不幸的是,JobIntentService 不会 运行 在 Android 8.0 及更高版本上立即生效。
When running as a pre-O service, the act of enqueueing work will generally start the service immediately, regardless of whether the device is dozing or in other conditions. When running as a Job, it will be subject to standard JobScheduler policies for a Job with a setOverrideDeadline(long) of 0: the job will not run while the device is dozing, it may get delayed more than a service if the device is under strong memory pressure with lots of demand to run jobs.
测试的时候,我新建一个空项目,调用的时候运行马上,但是当我在一个真正复杂的项目中使用的时候,调用之后运行几分钟。