それはまさに私が似たようなことをした方法です。サービスを作成し (IntentService
複雑なものが必要ない場合)、それをアラーム マネージャーに登録します。
long interval = intervalMinutes * 60 * 1000;
long firstTime = Calendar.getInstance().getTimeInMillis();
Intent i = new Intent(ctx, AlarmService.class);
// Use the widget ID to update only one widget at a time.
i.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id);
PendingIntent mAlarmSender = PendingIntent.getService(ctx, id, i, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) ctx.getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, firstTime, interval, mAlarmSender);
Service または IntentService の AlarmService.class であること。
起動イベントでは、アラームを登録できるアクションを作成しBroadcastReceiver
て管理できます。android.intent.action.BOOT_COMPLETED
でそのイベントに登録できますAndroidManifest
。
<receiver android:name=".BroadcastReceiverWidget" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>