第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android:保持后臺服務活著(防止進程死亡)

Android:保持后臺服務活著(防止進程死亡)

冉冉說 2019-08-12 10:04:18
Android:保持后臺服務活著(防止進程死亡)我有一個定義為的服務:public class SleepAccelerometerService extends Service implements SensorEventListener從本質上講,我正在制作一個應用程序,可以在用戶使用他或她的手機/設備睡在床上時,出于各種原因監(jiān)控加速度計活動。這是一項長期服務,不得在夜間殺死。根據(jù)夜間有多少后臺應用程序和定期進程,android有時會終止我的進程,從而結束我的服務。例:10-04 03:27:41.673: INFO/ActivityManager(1269): Process com.androsz.electricsleep (pid 16223) has died.10-04 03:27:41.681: INFO/WindowManager(1269): WIN DEATH: Window{45509f98 com.androsz.electricsleep/com.androsz.electricsleep.ui.SleepActivity paused=false}我不想強迫用戶將“SleepActivity”或我的應用中的其他活動作為前景。我不能定期運行我的服務,因為它會不斷攔截onSensorChanged。
查看完整描述

3 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

正如Dave已經指出的那樣,你可以運行Service前景優(yōu)先級。但是這種做法只應在絕對必要時使用,即如果服務被Android殺死會導致糟糕的用戶體驗。這就是“前景”的真正含義:你的應用程序在某種程度上處于前臺,如果它被殺死,用戶會立即注意到它(例如因為它播放了一首歌或一段視頻)。

在大多數(shù)情況下,請求服務的前臺優(yōu)先級是反效果的!

這是為什么?當Android決定殺死a時Service,它會這樣做,因為它缺少資源(通常是RAM)?;诓煌膬?yōu)先級類,Android決定終止哪些正在運行的進程以及這些服務,以便釋放資源。這是一個您希望發(fā)生的健康過程,以便用戶獲得流暢的體驗。如果您沒有充分理由請求前臺優(yōu)先級,只是為了防止您的服務被殺,它很可能會導致糟糕的用戶體驗?;蛘?,您能保證您的服務保持在最小的資源消耗范圍內并且沒有內存泄漏嗎?1

Android提供了粘性服務來標記服務,如果它們被殺死,應該在一段寬限期后重新啟動。這種重啟通常在幾秒鐘內完成。

想要為Android編寫XMPP客戶端的圖像。您是否應該為Service包含XMPP連接的前臺優(yōu)先級請求?絕對沒有,絕對沒有理由這樣做。但是您希望將其START_STICKY用作服務onStartCommand方法的返回標志。因此,當資源壓力時,您的服務會停止,并在情況恢復正常后重新啟動。

1:我很確定很多Android應用都有內存泄漏。這是休閑(桌面)程序員不關心的東西。


查看完整回答
1 反對 回復 2019-08-12
?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

對于Android 2.0或更高版本,您可以使用該startForeground()方法在前臺啟動服務。

文件說以下

啟動的服務可以使用startForeground(int, Notification)API將服務置于前臺狀態(tài),其中系統(tǒng)認為它是用戶主動意識到的東西,因此在內存不足時不是候選者。(從理論上講,服務在當前前臺應用程序的極端內存壓力下被殺死仍然是可能的,但實際上這不應該是一個問題。)

主要用于當殺死服務對用戶造成破壞時,例如,殺死音樂播放器服務將停止音樂播放。

您需要提供一個Notification方法,該方法顯示在Ongoing部分的Notifications Bar中。


查看完整回答
反對 回復 2019-08-12
?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

當您使用BIND_AUTO_CREATE將服務綁定到Activity時,您的服務將在您的活動被銷毀和解除綁定后被殺死。它不依賴于你如何實現(xiàn)你的服務unBind方法它仍將被殺死。

另一種方法是使用Activity中的startService方法啟動服務。這樣即使您的Activity被銷毀,您的服務也不會被銷毀甚至暫停,但您必須在適當時使用stopSelf / stopService自行暫停/銷毀它。


查看完整回答
反對 回復 2019-08-12
  • 3 回答
  • 0 關注
  • 2257 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號