Warum stürzt dieser Android -Alarm mit einem anhängigen Absicht ab?
-
16-10-2019 - |
Frage
Ich habe einen sehr einfachen Code, mit dem mein nächster Synchronisierungsvorgang geplant wird. Es läuft in dem Synkadapter, das abstraktMeadededsyncadapter erweitert - somit seinen Kontext. Der anstehende Ausgangspunkt für den Sender "MyService", der nur den Synkadapter verwaltet.
Ich versuche nur, es in 24 Stunden wieder aufzutreten.
private void scheduleNextSync(Long timeFromNow) {
Intent intentSync = new Intent(getContext(), MyService.class);
intentSync.setAction(Intent.ACTION_SYNC);
intentSync.addCategory("android.provider.CONTACTS_STRUCTURE");
intentSync.putExtra(MySyncAdapter.EXTRA_SYNC_TYPE, "");
intentSync.putExtra(MySyncAdapter.EXTRA_RESOLVE_METAID, false);
int flags = 0;
int request = REQUEST_SYNC_ALL;
PendingIntent piSync = PendingIntent.getBroadcast(getContext(), request, intentSync, flags);
//
Log.i(TAG, "schedulePendingSync: " + piSync.toString());
AlarmManager alarm = (AlarmManager) getContext().getSystemService(Activity.ALARM_SERVICE);
alarm.set(request, SystemClock.elapsedRealtime() + timeFromNow, piSync);
}
Protokollausgabe:
01-20 22:42:18.864 W/dalvikvm(14447): threadid=8: thread exiting with uncaught exception (group=0x40020950)
01-20 22:42:18.919 E/AndroidRuntime(14447): FATAL EXCEPTION: Thread-9
01-20 22:42:18.919 E/AndroidRuntime(14447): java.lang.NullPointerException
01-20 22:42:18.919 E/AndroidRuntime(14447): at android.os.Parcel.readException(Parcel.java:1253)
01-20 22:42:18.919 E/AndroidRuntime(14447): at android.os.Parcel.readException(Parcel.java:1235)
01-20 22:42:18.919 E/AndroidRuntime(14447): at android.app.IAlarmManager$Stub$Proxy.set(IAlarmManager.java:174)
01-20 22:42:18.919 E/AndroidRuntime(14447): at android.app.AlarmManager.set(AlarmManager.java:139)
01-20 22:42:18.919 E/AndroidRuntime(14447): at com.mysyncadpter.android.MySyncAdapter.scheduleNextSync(MySyncAdapter.java:145)
01-20 22:42:18.919 E/AndroidRuntime(14447): at com.mysyncadpter.android.MySyncAdapter.access$2(MySyncAdapter.java:131)
01-20 22:42:18.919 E/AndroidRuntime(14447): at com.mysyncadpter.android.MySyncAdapter$1.run(MySyncAdapter.java:123)
01-20 22:42:18.919 E/AndroidRuntime(14447): at java.lang.Thread.run(Thread.java:1096)
Lösung
Dein PendingIntent.getBroadcast
und alarm.set
Verwenden Sie die Anfrage REQUEST_SYNC_ALL
Ich kann das nicht konstant in der finden Alarmdokument, Noch die Ausstehender Doc.
Vielleicht bin ich mit dem neuesten SDK nicht synchronisiert :)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow