[英]Calling background Service from an Activity
我有一個活動和一個后台服務。 我通過活動中的Intent啟動服務。 即使活動已關閉,服務也會無限期運行。 但是這里的問題是,如果我從任務管理器中清除了內存,服務將停止並且不會再次啟動,直到再次啟動活動。 我希望該服務在一段時間后自動啟動以清除內存。 我怎樣才能做到這一點? 請幫忙。
使用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服務教程中找到更多代碼和示例。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.