簡體   English   中英

在Android中連續運行Socket.io服務

[英]Continuously Running Socket.io Service in Android

我正在開發使用Socket.io作為與服務器通信的方式的聊天客戶端。 因此,並不是完全可以使用GCM。

我希望能夠隨時接收聊天(即使應用程序已關閉); 本質上,套接字需要一直在監聽。 據我了解,當手機啟動並保持運行時,可以啟動服務。 但是,在移動設備上,耗盡電池等方面,這似乎是一個相當糟糕的主意。

研究表明,GCM似乎是此類問題的最常見實現。 不幸的是,目前我無法替換Socket.io。 我想知道如何實現這種聊天設計-在后台監聽套接字。

當您的應用程序啟動時,您應該運行一個服務(例如ListenerService),並且在該服務內部您必須啟動一個線程(例如ListenerThread)。 並保持該線程和服務有效,直到您的應用程序位於onResume()/ onPause()中。 通過該線程將客戶端套接字連接到服務器。 並在ListenerThread上接收所有更新。 如果要向服務器發送一些數據包,則在另一個線程/處理程序(例如tempThread)上發送並在發送請求后關閉該線程。
當您的應用程序關閉/退出時,請停止該服務(例如ListenerService)。 在該服務中,您必須休眠ListenerThread。 不要嘗試停止線程以獲取有關線程的更多信息,您可以點擊鏈接和鏈接。 從API級別1開始,Android不推薦使用Thread.stop(),請參閱document 使用START_STICKY啟動服務(ListenerService)。 供參考,請參考android服務文檔

GCM是處理此問題的正確方法。 將GCM警報發送到設備,然后用戶可以單擊它以打開您的應用。 那時,您可以重新打開套接字並獲取所需的數據。

如果您打算將應用程序部署到iOS,那么您將采用這種方式。 iOS會在5分鍾或更短的時間內殺死您的后台任務。

暫無
暫無

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

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