android监控网络状态变化防止多次广播的一种解决办法

从网上查阅了好多资料,整合成这篇,感谢csdn。测试了一下,能够在获得多次广播状态下显示一次网络断开的toast,不多说,上代码:

网络连接检测类:

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
/**
 * 网络连接状态检查类,这个是借鉴别人的,感谢提供者
 * @author Administrator
 *
 */
public class ConnectionDetector {
    private Context _context;
    
    public ConnectionDetector(Context context){
        this._context = context;
    }
 
    public boolean isConnectingToInternet(){
        ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
          if (connectivity != null)
          {
              NetworkInfo[] info = connectivity.getAllNetworkInfo();
              if (info != null)
                  for (int i = 0; i < info.length; i++)
                      if (info[i].getState() == NetworkInfo.State.CONNECTED)
                      {
                          return true;
                      }
 
          }
          return false;
    }
}

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

import com.zhenhua.xiuxiang.entity.ConnectionDetector;

public class ConnectionChangeReceiver extends BroadcastReceiver {
    private static int lastType = -1;

    @Override
    public void onReceive(Context context, Intent intent) {
        // log.debug("网络状态改变");
        String action = intent.getAction();
        Log.i("tag", "网络状态改变 action=" + action + " lastType=" + lastType);
        // 获得网络连接服务
        // 检查连接状态
        ConnectionDetector cd = new ConnectionDetector(context);
        Boolean isInternetPresent = cd.isConnectingToInternet(); // true or

        if (!isInternetPresent) {
            if (lastType != -1) {
                Toast.makeText(context, "网络连接中断", Toast.LENGTH_LONG).show();
            }
            lastType = -1;
        } else {
            lastType = 1;
        }

    }

}

配置:

 <receiver
            android:name="com.ConnectionChangeReceiver"
            android:label="NetworkConnection">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

            </intent-filter>
        </receiver>

权限设置:

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值