簡體   English   中英

Android 長時間運行服務

[英]Android long time running service

我正在處理一個 Android 項目,即使設備被鎖定,我也需要該應用程序正常工作。

這個想法是打開將啟動(Intent)Service的應用程序,該服務一直在處理數據。 設備可以被鎖定/收起,當應用程序打開一段時間后,服務將被手動停止。 該服務應該一直在后台運行

我在網上找到了信息,但我不確定該使用什么以及以何種方式使用..

我發現可以使用IntentService 此外,該服務應該在一個新線程中運行。 我需要一直處理來自 gps 的數據,我應該使用WakefulBroadcastReceiver嗎?

謝謝你。

IntentService不一定是您要使用的。 它會自動生成一個新線程來處理傳入的Intent 一旦處理了所有傳入的Intent ,它將停止Service 要擁有長時間運行的Service ,您需要從Service派生,並在它啟動時從onStartCommand()方法返回START_STICKY ,並生成您自己的線程來處理您的后台工作。

如果您需要監控 GPS,您必須管理它並使用WakeLock保持設備喚醒。 請注意,在 Marshmallow 中,這會變得更加復雜,因為新的 Doze 模式甚至會忽略喚醒鎖。

另外,請注意,Android 的架構方式仍有可能導致運行后台Service應用程序被終止。 Android 使用基於內存壓力和用戶感知優先級的獨特進程管理技術來確定進程應該保留多長時間。 我建議閱讀文檔中的Service生命周期。

在android中,它們不是確保您的服務永遠運行的萬無一失的方法,因為LMK(低內存殺手)在系統需要資源(基於某個內存閾值)時,會殺死該服務,然后如果它可以重新啟動它。 如果您正確處理重新啟動,該服務將繼續運行。

獲得前台優先級的服務被終止的可能性要小得多,因此這可能是您最好的選擇。 但是,它們將是您的服務在頂部菜單欄的后台運行的通知。 前台服務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM