[英]keep websocket open when app goes background in Tinder/Scarlet Websocket
[英]Websocket paused when android app goes to background
我的Android應用程序啟動了一個服務,該服務打開了一個Websocket來與遠程服務器進行通信。 該服務產生一個線程,其運行方法如下所示。
public void run() {
try {
super.run();
for(int i = 1; i < 1000; i++) {
Log.d(TAG, String.format(" *** Iteration #%d.", i));
Thread.sleep(3000); // Dummy load.
mWebsocket.sendTextMessage("Test");
}
}
catch (Exception exc) {
Log.d(MY_TAG, "MyThread.run - Exception: " + exc.getMessage());
}
}
當我關閉屏幕或將應用程序發送到后台時,logcat顯示循環正在運行,但是遠程服務器停止接收測試消息。 顯然,這些消息聚集在某個地方,因為一旦應用回到前台,服務器就會收到一堆測試消息。 這是Android上的預期行為嗎? 我嘗試了不同的Websocket軟件包(高速公路,okhttp3等),結果是相同的。
如果要確保在應用程序的UI處於后台時可以繼續運行此功能,則需要使該服務作為前台服務運行。 關於使用前台服務有一些限制/准則,請參閱https://developer.android.com/guide/components/services.html上的文檔。
另外,如果這項工作需要定期進行,並且不需要連續運行,則可以使用JobScheduler。 請參閱https://developer.android.com/topic/performance/scheduling.html 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.