Android 网络监控

本文介绍android的网络监控。


在项目中,我们往往要实时监控网络的状态,例如:1、你在看小视频,此时你的Wi-Fi断掉了,自动连上移动蜂窝网了,此时app就应该提示用户注意流量的使用。2、你想发起网络请求,但是你没连接网络,此时app也应该提示用户,如果发起网络请求,请打开网络等。具体监控步骤如下:

1、我们先创建个广播,用户接受网络变化发来的信息。

public class NetWorkBroadCastReceiver extends BroadcastReceiver {

private OnNetWorkWatchListener listener;

public NetWorkBroadCastReceiver(OnNetWorkWatchListener listenser) {

this.listener = listenser;

}

@Override

    public void onReceive(Context context, Intent intent) {

if (intent !=null) {

if (intent.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")) {

Utils.NetState state = Utils.NetworkState(context);

if (listener !=null) {

listener.onNetWorkChanged(state);

}

}

}

}

public interface OnNetWorkWatchListener {

/**

* 网络状态

*

        * @param state

        */

        void onNetWorkChanged(Utils.NetState state);

}

}

2、在BaseActivity中注册该广播,根据网络变化合理的提示用户,比如增加弹出框引导客户打开网络开关,关闭移动蜂窝开发,打开Wi-Fi开关等。

public abstract class BaseActivity extends FragmentActivity implements NetWorkBroadCastReceiver.OnNetWorkWatchListener {

private static final StringTAG = BaseActivity.class.getSimpleName();

private NetWorkBroadCastReceiver mNetWorkBroadCastReceiver;

@Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(initView());

initData();

}

protected abstract int initView();

protected void initData() {

IntentFilter intentFilter =new IntentFilter();

intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");

mNetWorkBroadCastReceiver =new NetWorkBroadCastReceiver(this);

registerReceiver(mNetWorkBroadCastReceiver, intentFilter);

}

@Override

    public void onNetWorkChanged(Utils.NetState state) {

Toast.makeText(this, state +"--", Toast.LENGTH_SHORT).show();

}

@Override

    protected void onDestroy() {

super.onDestroy();

unregisterReceiver(mNetWorkBroadCastReceiver);

}

}


最后附上demo。谢谢大家阅读

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容