2016-12-01 105 views
0

https://developer.android.com/training/monitoring-device-state/connectivity-monitoring.htmlConnectivityManager.CONNECTIVITY_ACTION廣播接收機

ConnectivityManager.CONNECTIVITY_ACTION不會在安卓7.0靜態工作按照Android開發者,但爲什麼不能在較早版本Android的

+1

最可能的情況是ConnectivityManager正在折舊,並且不適用於新型號,與其他型號的工作方式相同。一個很好的例子就是回收站查看器的工作方式不同,具體取決於您使用的是哪個sdk – MNM

+0

我想監視應用程序的網絡連接,即使應用程序未運行時也有任何建議? – User000

+0

@MNM沒有跡象表明'ConnectivityManager'已被棄用。此外,由於「RecyclerView」不是平臺的一部分,因此「RecyclerView」的行爲不同,具體取決於您使用的平臺版本。它是一個獨立的庫,它被編譯到APK中,不管它最終將運行在哪個平臺上。 – Karakuri

回答

1

工作不需要監視網絡連接在任何情況下都是爲了這個用例。當用戶使用您的應用時,您可以按照您提供的鏈接查看網絡。如果您沒有連接,則可以使用JobScheduler安排作業並使用jobInfoBuilder.setRequiredNetworkType(NETWORK_TYPE_ANY),系統將在存在網絡連接時運行作業,即使您的應用程序已經到了後臺。工作應該簡單地啓動一個服務,上傳正在等待的任何更改。

或者,如果它符合您的使用案例,您可以write a SyncAdapter並簡單地請求同步,並且系統的SyncManager將在適當時運行您的SyncAdapter

+0

謝謝你的建議。我想要一些事件驅動像廣播接收器,在我的應用程序,我可以得到通知,每當互聯網連接(應用程序不在後臺)。使用Job Scheduler應用程序無法通知Internet連接,它會按時安排工作,但我希望它能夠事件驅動。 – User000

+0

'JobScheduler' API根本不向我建議作業是基於時間的。即便如此,如果你的應用程序在後臺,這應該沒關係;在連接的瞬間,您不需要上傳到服務器,是嗎? (事實上​​,你讓應用程序脫機工作表明這個問題的答案是否定的) – Karakuri

+0

謝謝,它適用於API> = 21。但如何支持API <21 – User000