0

次の同期操作のスケジュールに使用される非常に単純なコードがあります。これは、AbstractThreadedSyncAdapterを継承するSyncAdapter内で実行されているため、そのコンテキストが使用されます。 SyncAdapterを管理するBroadcastReceiver "MyService"に対して開始されたPendingIntent。保留中のインテントクラッシュのAndroidアラームはなぜ発生しますか?

私はそれを24時間以内に再発するようにスケジュールしようとしています。

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); 
} 

ログ出力:

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) 

答えて

0

あなたPendingIntent.getBroadcastalarm.set私はAlarm doc、またPendingIntent docでその定数を見つけることができない要求REQUEST_SYNC_ALL を使用しています。

たぶん私は、最新のSDK :)

+0

自分の定義であると同期しています...は、予約値ということですか?私は100と101の2つの要求があります: "REQUEST_SYNC_FIRST_TIME"または "REQUEST_SYNC_ALL" – mobibob

+1

'PendingIntent'はうまくいくと思いますが、' Alarm'の場合は、 'ELAPSED_REALTIME'、' ELAPSED_REALTIME_WAKEUP'、 'RTC'、' RTC_WAKEUP'のいずれかです。 – ccheneson

+0

パーフェクト - これは私の使い方のコードに過ぎないと思っていたのですか?トリガが鳴ったときにその値を切り替える予定だった。私の墜落はなくなった。 – mobibob

関連する問題