簡體   English   中英

應用程序進入后台時保持套接字連接的最佳方法

[英]best way to maintain a socket connection when an app goes to the background

當我的Android應用程序進入后台時,我需要保持套接字連接。

當前,套接字是從其自己的線程啟動,讀取和寫入的。 我還將對這個線程的引用存儲在一個類的靜態實例中,這意味着當我的應用恢復時,我可以訪問該線程的引用。

如果應用程序被銷毀,我也不需要保留此套接字。

現在來問我一個問題:“我需要啟動服務來維護該線程嗎?還是可以繼續我當前的設計,即當應用程序在靜態容器類中恢復時,我需要存儲所有此類實例?”

到目前為止,我發現使用服務的唯一好處是,該應用程序可能是操作系統在內存不足或類似情況下要銷毀的最后幾個應用程序之一(考慮到服務和應用程序位於同一進程中)。

一旦活動被銷毀,您的進程將成為被關閉的候選者。 它很可能會徘徊片刻而不會被殺死。 但是在內存較少的低端設備上,所有賭注都沒有了。 轉到設備上的“開發人員選項”,然后選中“不要繼續執行活動...”。 退出活動並查看結果。

解決方法是使服務保持活動狀態。 最好帶有通知圖標,以便用戶知道它仍在運行。 這正是我對音樂應用程序所做的操作,即使用戶切換了應用程序,音頻流也可以繼續播放。

另一方面,專用的套接字連接將消耗更多的電池和更多的用戶數據計划。 如果您的套接字大部分時間都處於空閑狀態,則更好的方法可能是僅在通過推送通知通知有可用數據時,才將套接字連接連接到服務器。

暫無
暫無

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

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