アクティビティとバックグラウンド サービスがあります。アクティビティからインテント経由でサービスを開始します。アクティビティが閉じられても、サービスは無期限に実行されます。しかし、ここでの問題は、タスクマネージャーからメモリをクリアすると、サービスが停止し、アクティビティが再度起動されるまで再開されないことです。メモリがクリアされた後、サービスが自動的に開始されるようにします。どうすればこれを達成できますか?助けてください。
質問する
1087 次
2 に答える
0
AlarmManager service = (AlarmManager) getApplicationContext().getSystemService(
Context.ALARM_SERVICE);
Intent i = new Intent(this, BackgroundService.class);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 30);
PendingIntent pending = PendingIntent.getService(this, 0, i,
PendingIntent.FLAG_CANCEL_CURRENT);
service.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),30000, pending);
このコードは true です 30000 ミリ秒で backgroundService を実行します
于 2013-08-18T09:35:38.177 に答える
0
AlarmManagerを使用して、サービスの実行をスケジュールします。
メイン (ルート) アクティビティで:
@Override
public void onStop() {
super.onStop();
AlarmManager service = (AlarmManager) context.getSystemService(
Context.ALARM_SERVICE);
Intent i = new Intent(this, MyService.class);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 30);
PendingIntent pending = PendingIntent.getService(this, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
service.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
REPEAT_TIME, pending);
}
これにより、アクティビティが停止してから 30 秒後にサービスが開始されます。または、サービスが実行されているかどうかを確認して開始する BroadcastReceiver を定義することもできます。これを実現するには、単にブロードキャストを作成しますPendingIntent
。
その他のコードと例はAndroid Service Tutorialにあります。
于 2012-10-06T14:06:46.443 に答える