2011-12-23 23 views

答えて

45

はい、再発する「アラーム」を設定するには、AlarmManagerを参照する必要があります。これは、バックグラウンドで絶えず動作しないサービスとは異なり、デバイスのバッテリ寿命を改善します。アラームは、カスタムコードを実行するbroadcast receiverをトリガします。

最終的なメモとして、実際の値を設定することはできますが、毎日、半日など、アラームのタイミングの列挙値があります。

良い例は、SOポスト続く中で見つけることができます:

Alarm Manager Example

更新

を新しい機能は、Androidに追加されました。あなたがこれを読んでいるなら、私は今あなたにGcmNetworkManagerを調べることを勧めます。これによりバッテリ寿命が最適化され、プレロリポップが動作します。 Lollipop以降ではJobSchedulerを使用できます。これらのクラスをAlarmManagerで使用することをお勧めします。

+0

おかげで、これは私が探していたまさにです。 – siemian

+0

@Graham Smith興味のあることは、自分で書いたのですか? –

+0

@Graham Smith あなたが提供したリンクは故障です。あなたは働くリンクを提供できますか? – Zapnologica

6

私は現在の週と比較しています別の方法として:

Calendar cal = Calendar.getInstance(); 
int currentWeekOfYear = cal.get(Calendar.WEEK_OF_YEAR); 

SharedPreferences sharedPreferences= this.getSharedPreferences("appInfo", 0); 
int weekOfYear = sharedPreferences.getInt("weekOfYear", 0); 

if(weekOfYear != currentWeekOfYear){ 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putInt("weekOfYear", currentWeekOfYear); 
    editor.commit(); 
    // Your once a week code here 
} 

を、私は、これはアラームソリューションよりも優れている提唱していませんよ。私は別のアプローチを示しています。

12

ベストフィットはGcmNetworkManagerだと思います。基本的には、AlarmManagerと永続性の両方から必要なものをすべて取得できるため、再起動後にジョブを実行することができます。

例:

PeriodicTask task = new PeriodicTask.Builder() 
     .setService(MyTaskService.class) 
     .setTag(TASK_TAG_PERIODIC) 
     .setPeriod(5L) 
     .build(); 

mGcmNetworkManager.schedule(task); 
+1

あなたはそうです - これはおそらくこれを行う通常の方法になるでしょう。私は2,5年前に私の答えを書いたので、物事は進む。あなたが 'GcmNetworkManager'を使う必要がないので、あなたはAndroid 5のLollipop Job Schedulerを追加する必要があると私は主張します。私はbtwをupvoted。 –

関連する問題