android Connectivity_Change broadcastreceiver没有得到一致的调用

GJa*_*ain 0 android

我正在尝试测试/实现丢失的网络用例.我有下面提到的代码.

我在Galaxy S6上运行它.我同时启用了移动数据和WiFi.

要禁用网络,我打开"飞行模式"

我的问题是:

如果我从android studio重新启动应用程序,我会被ConnectionChangeReceiver.onReceive()调用.但是,在几次打开/关闭飞行模式后,我没有被onReceive()打电话.

我在工作室设置断点来检查它是否被调用.

我错过了什么吗?

public class ConnectionChangeReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive( Context context, Intent intent )
    {
        // get Connectivity Manager object to check connection
        ConnectivityManager connectivityManager =(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();

        // Check for network connections
        if ( activeNetInfo != null && activeNetInfo.isConnected()) {
            Intent newintent = new Intent(BroadcastedIntentFilters.INTERNET_CONNECTED);
            LocalBroadcastManager.getInstance(context).sendBroadcast(newintent);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在清单文件中

    <receiver
        android:name=".Network.ConnectionChangeReceiver"
        android:exported="true"
        android:label="NetworkConnection" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.wifi.STATE_CHANGE"/>
        </intent-filter>
    </receiver>


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)

kli*_*mat 7

在Android 5.0及更高版本中,您必须监视connectivityManager.registerNetworkCallback与您应该监听的早期版本不同的更改BroadcastReveiver.

我写了一个简单的类,它支持所有Android版本,并允许监视更改并询问当前状态.

https://github.com/mklimek/network-availability