我想實現一個jobcheduler來調用jobservice,這會在每5分鐘觸發一次,以捕獲在特定的geoLocation中花費的時間。但下面的代碼是爲棉花糖和以上的工作,但它爲棒棒糖和以下的崩潰。 這是我的代碼 - >java.lang.NoSuchMethodError:沒有虛擬方法getSystemService
ComponentName serviceComponent = new ComponentName(context, SyncDbToServerJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(0, serviceComponent);
PersistableBundle bundle = new PersistableBundle();
bundle.putString(Constants.ENTERED_TIME, enteredTime);
builder.setPeriodic(intervalMillis).setExtras(bundle).setPersisted(true);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED); // require unmetered network
builder.setRequiresDeviceIdle(true); // device should be idle
builder.setRequiresCharging(false); // we don't care if the device is charging or not
JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
jobScheduler.schedule(builder.build());
這個喜歡做的錯誤 - >
JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
這是我的日誌錯誤 - >
04-19 11:38:25.358 1986-4658/com.eonelectric.eon E/AndroidRuntime: FATAL EXCEPTION: IntentService[GeofenceTransitionsIS]
Process: com.eonelectric.eon, PID: 1986
java.lang.NoSuchMethodError: No virtual method getSystemService(Ljava/lang/Class;)Ljava/lang/Object; in class Landroid/content/Context; or its super classes (declaration of 'android.content.Context' appears in /system/framework/framework.jar)
at com.eonelectric.eon.GeneralUtil.startSyncAlarm(GeneralUtil.java:440)
at com.eonelectric.eon.beatTrack.GeofenceTransitionsIntentService.getGeofenceTransitionDetails(GeofenceTransitionsIntentService.java:137)
at com.eonelectric.eon.beatTrack.GeofenceTransitionsIntentService.onHandleIntent(GeofenceTransitionsIntentService.java:96)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.os.HandlerThread.run(HandlerThread.java:61)
我也面臨同樣的問題,你有任何解決方案? – Jordon
我使用AlarmManager作爲下面的棒棒糖(API 21)和JobScheduler作爲棉花糖及以上作品。現在它不崩潰。但JobScheduler仍然沒有在確切的時間(5分鐘)觸發服務,可能是操作系統殺死後臺線程。並且AlarmManager太耗電了。 @Jordon –
對我來說,JobScheduler正在棉花糖上工作,我嘗試了10秒的時間間隔,並且工作良好。你是否檢查了Android N上的作業調度程序?對我而言,Job只在Android N中被調用一次。 – Jordon