アプリケーションが閉じられている場合でも、定期的に(週に1日1回)何らかのタスク(つまり、Webサイトのニュースページを取得する)を実行します。出来ますか?
はい、そうです、 AlarmManager を見て、繰り返し発生する「アラーム」を設定する必要があります。これは、サービスとは異なり、バックグラウンドで常に実行されるわけではないため、デバイスのバッテリー寿命にとって優れています。アラームは、カスタムコードを実行する broadcast receiver をトリガーします。
最後に、実際の値を設定することもできますが、毎日、半日など、アラームのタイミングの列挙値があります。
良い例は次のSO post:
更新
新しい機能がAndroidに追加されました。これを読んでいるなら、今 GcmNetworkManager を調べることをお勧めします。これにより、バッテリーの寿命が最適化され、Lollipop以前のバージョンで動作します。 Lollipop以降では、 JobScheduler を使用できます。 AlarmManagerでこれらのクラスを使用することをお勧めします。
最適なのは GcmNetworkManager だと思います。基本的に、AlarmManagerに必要なものに加えて永続性があるため、ジョブは再起動後に実行を続行できます。
例:
PeriodicTask task = new PeriodicTask.Builder()
.setService(MyTaskService.class)
.setTag(TASK_TAG_PERIODIC)
.setPeriod(5L)
.build();
mGcmNetworkManager.schedule(task);
別の方法として、現在の週を比較しています:
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
}
私は、これがAlarmソリューションよりも優れていると主張しているわけではありません。別のアプローチを示しています。