【问题标题】:android: ConnectivityManager.CONNECTIVITY_ACTION, send broadcast when the net connected state has not changedandroid:ConnectivityManager.CONNECTIVITY_ACTION,当网络连接状态没有改变时发送广播
【发布时间】:2014-08-27 14:06:05
【问题描述】:

我注册了一个广播获取ConnectivityManager.CONNECTIVITY_ACTION,代码是:

registerReceiver(mNetwrokBroadcastReceiver, new IntentFilter(
            ConnectivityManager.CONNECTIVITY_ACTION));

而接收者是:

private BroadcastReceiver mNetwrokBroadcastReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {

        boolean isConnected = false;
        NetworkInfo mNetworkInfo = intent
                .getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
        NetworkInfo.State state = (mNetworkInfo == null ? NetworkInfo.State.UNKNOWN
                : mNetworkInfo.getState());

        switch (state) {
        case CONNECTED:
            isConnected = true;
            break;

        case DISCONNECTING:
            if (intent.getBooleanExtra(
                    ConnectivityManager.EXTRA_NO_CONNECTIVITY, false))
                isConnected = false;
            else {
                isConnected = true;
            }
            break;

        default:
            break;
        }


        if (isConnected) {
            mPopwin.onDismiss();
            init();

        }
    }
};

但我发现当网络总是连接时,它也发送广播,为什么??? 有一个相同的question,我不明白。

编辑: 我的意思是,我在活动的初始化中注册了一个过滤器为“ConnectivityManager.CONNECTIVITY_ACTION”的广播,当网络始终连接时,我启动活动,执行“onReceive”函数;在google doc说“网络连接发生了变化”,但是网络没有变化,为什么要执行onReceive?

【问题讨论】:

标签: android


【解决方案1】:

由于 CONNECTIVITY_ACTION 是棒广播,因此它会不断调用 onRecevie 来删除它,你可以使用 removeStickyBroadcast(意图)DOC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-13
    • 2019-03-04
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多