2017-09-07 133 views
1

我正在閱讀關於Android 8中的後臺服務限制,並且從我讀到的內容看來,您似乎無法在後臺長時間運行您的服務。這似乎是合理的,但因爲我使用後臺服務來保持連接到服務器 - 目前彙集新的東西,發送位置和響應我有點困惑。答覆是確定的,我只能在與應用程序交互時做出響應,但合併新東西是有問題的,因爲它需要從服務器獲取內容,並且如果有新內容出現,用戶將收到通知以響應該內容。Android O後臺網絡

如果我理解正確的話,我可以使用的jobscheduler安排一些工作每隔幾秒鐘。我基本上可以安排合併。對於後臺位置,還有這些限制,所以只有前臺服務才能在請求的時間內獲得更新。

我將遷移到websockets,然後關閉池,到服務器的連接將是持久的,應用程序將從服務器獲取更新,我打算在後臺服務中這樣做,以便從服務器接收東西每次。不過,從Android 8開始我似乎無法解決這個問題。我應該使用前臺服務進行位置和服務器連接嗎?或者有沒有更好的方法來在Android 8上的Android應用程序中做後臺網絡?

感謝

回答

0

下面是Android上執行Ø後臺工作的幾個選項:

  • 使用的jobscheduler。您似乎已經很好地掌握了這一點 - 缺點是它是週期性的,並不是持久的。

  • 使用GCM/FCM或類似的推送服務將數據推到你的應用程序時,它是相關的,而不是不斷地抱着你的服務器的連接。

  • Use a foreground service。這將允許您繼續執行後臺工作,而無需將應用程序置於前臺,但會在狀態欄中發出通知,通知用戶您正在執行此項工作。

您選擇這些方法之一之前,您應該花點時間退後一步,看着你從你的服務器需要的數據,並確定爲什麼你需要一個持久連接,以及是否在第一或第二選項可能就足夠了。

如果你絕對需要你的服務器的持久連接,最後的選擇是最好的選擇。 O中的變化背後的想法是仍然允許後臺工作,比如你正在描述的內容,但是讓用戶明白你的應用程序正在這麼做。這樣,如果他們不認爲你的數據和你一樣重要,他們可以採取行動。