javaandroidjobintentservice

JobIntentService not call OnHandleWork


I've custom JobIntentService witn static method enqueueWork.

public static void enqueueWork(@NonNull Context context, @NonNull Intent intent) {        
            enqueueWork(context, MyJobIntentService.class, JOB_ID, intent);       
    }

Also I've custom implementation of the FirebaseMessagingService. When I receive the push notification from FCM, I call the enqueueWork of my JobIntentService.

MyJobIntentService.enqueueWork(context, new Intent());

But method OnHandleWork not called on Android 8.0 and higher. My manifest.xml.

<service android:name="com.company.MyJobIntentService"
            android:permission="android.permission.BIND_JOB_SERVICE" />

Do you have any ideas why it work not correctly? Thank you.


Solution

  • Nothing incorrectly. Unfortunately, JobIntentService will not run immediately on Android 8.0 and higher.

    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.
    

    When testing,I new a empty project, it runs immediately when call, but when i use in a real complex project,it runs several minutes later after called.