2017-07-03 38 views
0

根據該文件,因爲android.net.conn.CONNECTIVITY_CHANGE已過時,我不能檢查網絡連接如沒有不贊成的方法

<action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 

使自己ConnectionChangeReceiver

並使用JobExecutor是一個壞主意,因爲它每15分鐘檢查一次互聯網連接不會少於一次......沒用的工具。

那麼,如何在所有版本的操作系統Android上使用後臺(服務或某些接收方)檢查互聯網連接而不使用已棄用的方法?

+0

使用JobService進行檢查網絡連接 –

回答

2

如果您明確使用BroadcastReceiver並請求通知,則您的應用仍然可以在Nougat上接收關於連接更改的通知。

從文檔報價:

應用定位的Android 7.0(API等級24),如果他們述說自己的廣播接收器清單中的較高不接收CONNECTIVITY_ACTION廣播。如果使用Context.registerReceiver()註冊其BroadcastReceiver並且該上下文仍然有效,則應用程序仍然會收到CONNECTIVITY_ACTION廣播。

爲了使它在不同的Android版本,則可以使用聲明許可清單中,因爲我們通常做的,另外,在活動中使用下面的代碼:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
    registerReceiver(mNetworkReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 
}