Je suis confronté au problème ci-dessous dans Android O et supérieur lorsque j'essaie d'exécuter mon JobIntentService , j'ai du mal à reproduire le problème:
Caused by Java.lang.SecurityException: Caller no longer running, last stopped +206ms because: timed out while starting
at Android.os.Parcel.readException(Parcel.Java:1942)
at Android.os.Parcel.readException(Parcel.Java:1888)
at Android.app.job.IJobCallback$Stub$Proxy.dequeueWork(IJobCallback.Java:191)
at Android.app.job.JobParameters.dequeueWork(JobParameters.Java:196)
at Android.support.v4.app.JobIntentService$JobServiceEngineImpl.dequeueWork(JobIntentService.Java:314)
at Android.support.v4.app.JobIntentService.dequeueWork(JobIntentService.Java:639)
at Android.support.v4.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.Java:389)
at Android.support.v4.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.Java:382)
at Android.os.AsyncTask$2.call(AsyncTask.Java:333)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1162)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:636)
at Java.lang.Thread.run(Thread.Java:764)
Laissez votre jobIntentService étendre MyJobIntentService
Ceci gérera plusieurs appels dequeueWork allant à remoteProcess, Même si le remoteProcess lève une exception de sécurité pour la suppression du travail déjà supprimé de la pile.
package Android.support.v4.app;
import timber.log.Timber;
public abstract class MyJobIntentService extends JobIntentService {
@Override
GenericWorkItem dequeueWork() {
try {
return super.dequeueWork();
} catch (SecurityException ignored) {
Timber.e(ignored);
}
return null;
}
}
Remarque: Il est important de créer le package "Android.support.v4.app" En tant que classe GenericWorkItem se trouve dans ce package pour obtenir un accès.