2011-09-15 15 views
1

私のアプリケーションは、X分ごとに、それよりも、データベース上で同じ動作を行うstopSelf()サービスを持っているし、onDestroyメソッドに私は同じ時間後に再スタートのために、このコードのサービスをpalcedていますアンドロイド:サービスを再起動

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    Intent intent_service = new Intent(context,vampireService.class); 
    PendingIntent pintent = PendingIntent.getService(context, 0, intent_service,0); 
    AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    alarm.set(AlarmManager.ELAPSED_REALTIME,SystemClock.elapsedRealtime()+ 4500000, pintent); 
} 

しかし、私の電話がスリープモードに入るとサービスが再起動しないのはなぜですか?アラームマネージャのカウント時間が、ディスプレイの電源を切ってから開始するように表示されます....可能でしょうか?はいの場合、どうすればこの問題を解決できますか?

おかげ

ELAPSED_REALTIMEのドキュメントから

答えて

2

...

をデバイスを起動しません。このアラーム。デバイスがスリープしている間にデバイスが消灯した場合、デバイスが次に起動するまでデバイスはスリープ状態になりません。

ELAPSED_REALTIME_WAKEUPを使用してみてください(ただし、サービスで動作するかどうかはわかりません)。

+0

いいえ動作しません...よりもXXX時間後にサービスを停止して再開できますか? – Mimmo

+0

@Mimmo:この回答の解決策はうまくいくはずです。しかし、 'getService()' 'PendingIntent'と' _WAKEUP'アラームで信頼できる結果を得ることはできません。さらに、サービスが動作している間、あなたのサービスは 'WakeLock'を維持する必要があります。そうでなければ、デバイスは眠りに落ちます。 '_WAKEUP'アラームを使用するための適切なパターンがあり、作業中にデバイスを起床させておくので、自分の[' WakefulIntentService'](https://github.com/commonsguy/cwac-wakeful)の使用を検討することもできます。 – CommonsWare

+0

しかし、スリープモードに入っているときに1つのサービスを再起動できない可能性はありますか? – Mimmo

0

アラームマネージャを使用して、X時間ごとに実行するようにサービスをスケジュールすることができます(また、スケジュールする必要があります)。このオプションはsetRepeatingにあります。

関連する問題