2011-06-22 34 views
0
SilenceReceiver silenceReceiver = new SilenceReceiver(); 
IntentFilter silenceFilter = new IntentFilter(SilenceReceiver.SILENCE_ALARM); 
registerReceiver(silenceReceiver, silenceFilter); 

AwakeReceiver awakeReceiver = new AwakeReceiver(); 
IntentFilter awakeFilter = new IntentFilter(AwakeReceiver.WAKE_ALARM); 
registerReceiver(awakeReceiver, awakeFilter); 

GregorianCalendar sleepCalendar = new GregorianCalendar(); 
sleepCalendar.set(Calendar.SECOND, sleepCalendar.get(Calendar.SECOND)+5); 
long triggerTime = sleepCalendar.getTimeInMillis(); 

GregorianCalendar awakeCalendar = new GregorianCalendar(); 
awakeCalendar.set(Calendar.SECOND, awakeCalendar.get(Calendar.SECOND)+30); 
long awakeTime = awakeCalendar.getTimeInMillis(); 

AlarmManager alarm = (AlarmManager) this.getSystemService(Service.ALARM_SERVICE); 
PendingIntent sleepIntent = PendingIntent.getBroadcast(this, 0, new Intent(SilenceReceiver.SILENCE_ALARM), 0); 
alarm.set(AlarmManager.RTC_WAKEUP, triggerTime, sleepIntent); 
PendingIntent awakeIntent = PendingIntent.getBroadcast(this, 0, new Intent(AwakeReceiver.WAKE_ALARM), 0); 
alarm.set(AlarmManager.RTC_WAKEUP, awakeTime, awakeIntent); 

問題が発生すると、AwakeReceiverがトリガーを受け取らない場合があります。私はこれについて何かできることはありますか?タスクが終了した後のAlarmManager

答えて

2

ブロードキャストレシーバのインテントフィルタをコードではなくマニフェストに登録します。

+0

ありがとうございます。私は動的にそれらを登録/登録解除できるようにコードでそれを行う方法はありますか?それとも、バッテリに課税されない未使用のレシーバを登録していますか? – user123321

+0

なぜそれが違いますか? (私はそれが何であるのか知っていますが、なぜ/どういう意味ですか?)マニフェストに登録されると、別のコンテキストがありますか?なぜあなたがマニフェストに登録していれば、コードで登録を解除できないのですか? さらに重要なことは、コードで実行する必要があるACTION_SCREEN_OFFのようなアクションに登録する必要がある場合はどうすればよいですか?マニフェストに登録されているように振る舞うように登録するにはどうすればいいですか? – IBoS

関連する問題