起動時にサービスを実行し、10 分ごとに実行するようにスケジュールしたいと考えています。これについてどうすればよいですか?
起動時に10分間スケジュールを強制できますが、再起動後にすべてのスケジュールが失われるため、起動時に毎回これをスケジュールする必要があると思いますか?
起動時にサービスを実行し、10 分ごとに実行するようにスケジュールしたいと考えています。これについてどうすればよいですか?
起動時に10分間スケジュールを強制できますが、再起動後にすべてのスケジュールが失われるため、起動時に毎回これをスケジュールする必要があると思いますか?
ここには、起動時にサービスを開始する方法を説明する素敵な小さなチュートリアルがあり、実行を継続し、一定の間隔で何かを行います (チュートリアルの場合はログ ファイルに書き込みます)。
@CommonsWare が指摘しているように、これによりシステムに不要な負荷がかかります。このスレッドで説明されているように、AlarmManager を使用して繰り返しアラームをスケジュールすることをお勧めします。アプリを登録して BOOT_COMPLETED ブロードキャストを受信し (上記のチュートリアルで説明)、それに応じてアラームをスケジュールできます。
私のアプリケーションでは、デバイスの起動が完了したときに通知されるように、 ACTION_BOOT_COMPLETEDインテントにブロードキャストレシーバーを登録しました。結果を達成するには、マニフェスト ファイルで次を指定する必要があります。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
...
<receiver
android:name=".YOUR_BROADCAST_RECEIVER">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
BroadcastReceiver で、サービスを開始しました
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, serviceClass));
...
}
最後に、サービスの onStartCommand で
public int onStartCommand(Intent intent, int flags, int startId) {
...
setNextSchedule();
...
}
private void setNextSchedule() {
long time = WHEN_YOU WANT_THE SERVICE TO BE SCHEDULED AGAIN;
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getService(this, 0,new Intent(this, this.getClass()), PendingIntent.FLAG_ONE_SHOT);
am.set(AlarmManager.RTC_WAKEUP, time, pi);
}
AlarmMangerは保留中のインテントを使用して、渡されたインテントをサービスに送信します。こちらをご覧ください
さよなら