Nie jestem w stanie uzyskać JobScheduler, aby rozpocząć zaplanowane zadanie podczas działania na emulatorze Androida. Gdybym przetestować na prawdziwym Samsung Galaxy Nexus 5X i S7, zarówno z systemem Android 6.0.1 , zaplanowane zadanie rozpoczyna się natychmiast. Emulator jest skonfigurowany tak, aby miał 100% baterii i ładowanie oraz pełną prędkość sieci.Android JobScheduler nie uruchamia się na emulatorze
Mam uruchomione Android Studio 2.1.1, jre 1.8.0_92-b14 na OSX El capitan 10.11.4. Wersja emulatora to 25.1.6 i działa pod numerem Android 6.0.
ten sposób zaplanować swoją pracę:
public static void sendInspectionSessions(Context context) {
JobScheduler js = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo job = new JobInfo.Builder(
INSPECTION_SESSION_JOB_ID,
new ComponentName(context, InspectionSessionJobService.class))
.setBackoffCriteria(TimeUnit.SECONDS.toMillis(30), JobInfo.BACKOFF_POLICY_EXPONENTIAL)
.setPersisted(true)
.setMinimumLatency(0)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.setOverrideDeadline(Config.INSPECTION_SESSION_SEND_DEADLINE)
.build();
int id = js.schedule(job);
if (id > 0) {
LogUtil.i(TAG, "Scheduled InspectionSession send job with id " + id + ". Supplied id was " + INSPECTION_SESSION_JOB_ID);
} else {
LogUtil.e(TAG, "Failed to schedule InspectionSession send job. Return code was " + id);
}
}
terminarza (1) powraca zarówno na emulatorze i urządzenia. W emulatorze nie są wyświetlane żadne komunikaty o błędach.
Mam zdefiniowane mój serwis praca w AndroidManifest następujący sposób:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<service android:name=".service.InspectionSessionJobService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="true" />
ja coś przeoczyłem czy jest to błąd z systemem Android Emulator? Czy ktoś ma JobScheduler do pracy na emulatorze?
bym nawet wziąć rozpoczęciem procesu poprzez ADB. Wiele przykładów odwołuje się do GCMNetworkManager, ale nie do JobScheduler, jeśli nie jesteś zainteresowany wersją 5.0. –
W moim przypadku na początku wydawało się, że jest to ten sam problem, ponieważ usługa nie działa. Ale po pewnym czasie okazało się, że nastąpiło opóźnienie, zanim usługa zostanie wywołana. Jeśli ustawimy minimalne opóźnienie i przesłonimy termin do 0, usługa zostanie wykonana niemal natychmiast. – vsatkh