我想每隔'x'分鐘向用戶提供toast通知,我試圖在服務的幫助下做到這一點,但是當應用程序被殺時,服務停止。 意圖服務也出現同樣的問題,爲了讓我在內存中保留線程/服務,應該怎麼做?如何在應用程序被殺後在後臺運行線程
回答
實現這個代碼片斷你的問題的條款是有點混亂:
- 的應用關鍵在於過程。如果該進程被終止,那麼在該進程中運行的所有內容都將被終止。
- 如果你想讓某個東西在這個過程的死亡中生存下來,你應該使用第二個過程並運行它以在其中生存。
- 服務可以在自己的過程中運行,在這裏看起來是一個不錯的選擇。看看服務標籤中的android:process屬性:http://developer.android.com/guide/topics/manifest/service-element.html
但是你想要做的也許更簡單:設置一個重複任務。爲此,您可以使用alarm manager。
可以,例如:
- 提供一個懸而未決的意圖
- 掛起的意圖報警經理會觸發你自己
- 的服務的服務,我們將喚醒,然後運行。這樣做的好處是不會讓您的服務始終運行,並計算時間以瞭解何時必須喚醒(這會消耗電池電量)。在這裏,警報管理器將在需要時將其喚醒,您的服務將執行其任務並死亡。
如果你有這個問題的答案的第一部分相結合這種方式,在不同的進程中運行的服務,那麼你可以實現的東西,是針對Android設備的重量真的很輕:只有您的服務(在它自己的進程)將在給定的時間間隔內喚醒,並且應用程序的進程將不會由此警報啓動,而僅僅是服務的進程。
關於敬酒通知,是的,服務是一個很好的去處,但通知欄可能更適合顯示通知,並通知用戶一些事件發生在後臺服務中。
這是解決問題的正確答案。 'AlarmManager'將確保Receiver每n分鐘被調用一次,並且不會讓流程保持活躍狀態。然而,Adhikari的回答更符合所問的問題。 – velis
嘗試實施前臺服務。 foreground service
前臺服務顯示通知,永遠不會停止,直到您想要。
在您服務的onCreate
Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
System.currentTimeMillis());
Intent notificationIntent = new Intent(this, ExampleActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this, getText(R.string.notification_title),
getText(R.string.notification_message), pendingIntent);
startForeground(ONGOING_NOTIFICATION_ID, notification);
我想顯示一個敬酒,而不是通知。 –
如果顯示通知,則服務在前臺運行,永不停止,否則系統將在需要資源時結束服務。 –
- 1. 殺死應用程序並啓動後,它在後臺運行
- 2. IOS:如何在應用程序被殺時在後臺運行方法
- 3. 當應用程序進入後臺時運行後臺線程
- 4. C# - 如何殺死在後臺程序運行的excel進程
- 5. 在後臺運行線程
- 6. 殺死在後臺運行的應用程序android
- 7. 如何在iphone中終止應用程序後運行後臺線程?
- 8. 如何殺死在後臺進程中運行的Android應用程序
- 9. 在後臺運行應用程序IntentService
- 10. Android應用程序在後臺運行
- 11. Android,在後臺運行應用程序
- 12. 在後臺運行應用程序
- 13. 在後臺運行應用程序
- 14. 在後臺運行iOS應用程序
- 15. 在後臺運行的應用程序
- 16. iphone應用程序在後臺運行?
- 17. Android在後臺運行應用程序
- 18. 在後臺運行應用程序Cordova
- 19. 在後臺運行android應用程序?
- 20. 在後臺運行應用程序
- 21. 在後臺運行應用程序
- 22. 在後臺運行應用程序?
- 23. WatchOS應用程序在後臺運行
- 24. 在後臺運行應用程序android
- 25. 在整個應用程序中運行Android的後臺線程
- 26. 即使在殺死應用程序後,android仍在運行後臺服務
- 27. 在後臺運行程序
- 28. 在後臺運行程序
- 29. 如何在後臺進程中運行linux應用程序?
- 30. 如何在ASP.Net web應用程序中運行後臺進程
+1對於很好的問題 – Pankaj