我有一個活動和後臺服務。我通過活動的Intent啓動服務。即使活動已關閉,服務也會無限期地運行。但是這裏的問題是,如果我從任務管理器中清除內存,則服務停止並且不會再次啓動,直到再次啓動活動。我希望服務在內存清空一段時間後自動啓動。我怎麼能做到這一點?請幫忙。從活動調用後臺服務
0
A
回答
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。
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);
這個代碼是真正的30000毫秒運行backgroundService
相關問題
- 1. 從後臺服務啓動Android活動
- 2. Android:活動不會從後臺執行onNewIntent()(從服務調用)
- 3. Android:從後臺服務開始活動
- 4. 從後臺線程中調用活動
- 5. 從BroadcastReceiver調用後臺服務
- 6. 從後臺線程調用WCF服務
- 7. 如何在後臺啓動服務並從該服務啓動一項活動?
- 8. 更新前臺服務notificaton從活動
- 9. 從服務中調用活動
- 10. 如何從活動調用服務?
- 11. 從服務調用的活動
- 12. 後臺任務和活動
- 13. 將數據從後臺服務發送到當前在後臺的活動
- 14. 反應本機 - 從後臺服務開始活動
- 15. 如何從後臺服務開始活動
- 16. 在後臺服務啓動線程時調用或發送消息給活動
- 17. 從WCF工作流服務代碼活動調用wcf服務
- 18. 活動從服務
- 19. android服務回調從asynctask到活動
- 20. 如果pendingintent調用getService()多次啓動生活後臺服務會怎麼樣
- 21. 活動崩潰後的Android停止後臺服務
- 22. 我應該使用服務而不是後臺活動嗎?
- 23. 使用Subversion並推送到舞臺然後活動服務器
- 24. 跨移動後臺服務
- 25. 後臺任務中的活動或服務?
- 26. 從後臺更新前臺活動
- 27. AlarmManager不調用後臺服務
- 28. 如何在後臺調用Web服務?
- 29. Android後臺線程:從活動啓動和服務啓動之間的區別
- 30. 保持活力在後臺服務?
我跟着你提到的教程。但是,RAM存儲器被清除時,服務不會自動啓動。 – mithu
您的示例啓動服務並使其即使在活動關閉後仍保持運行。但是在RAM內存被清除之後,Service始終不會自動啓動,直到Activity啓動。我有一個想法,請告訴我,如果這可以遵循。服務應作爲可通過BroadcastReceiver啓動的不同應用程序編寫。服務和活動共享本地數據庫。所以應該創建一個ContentProvider來在這兩個應用程序之間共享數據庫。這可能嗎? – mithu
即使應用程序停止,我的示例服務也會啓動。 – marwinXXII