前言
在Android的实际开发过程中,我们偶尔会用到实时监听网络状态,那么这时候,广播这个神奇的监听器就可以派上用场了。今天我们就来讲讲我自己封装的一个网络实时监测广播工具类 — NetworkReceiver 的使用。
今天涉及内容:
- NetworkReceiver 用途
- NetworkReceiver使用前置
- NetworkReceiver基本方法介绍及使用
- MainActivity中监听网络实时状态代码
- 效果图和项目结构图
- NetworkReceiver 源码
先看下效果图
3.gif
一. NetworkReceiver 用途
NetworkReceiver作为一个网络实时监测广播类,主要用于监测手机是否联网,主要用来检测两种网络连接状态,有网络连接和无网络链接。
二.NetworkReceiver使用前置
NetworkReceiver涉及到网络监听问题,需要网络相关权限,你只需要在Androidmanifast.xml 中添加以下权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
注意,你只需要添加以上权限即可,不必在代码中手动申请android6.0及以上权限。
三. NetworkReceiver基本方法介绍及使用
NetworkReceiver作为一个实时监听网络链接状态的广播,具备以下方法:
//初始化广播对象并注册广播监听
NetworkReceiver(Context context)
//设置网络监听
setOnNetworkListener(OnNetworkListener listener)
//注销广播监听
onDestroy()
四.MainActivity中监听网络实时状态代码
下面贴出NetworkReceiver在MainActivity中使用代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private TextView mTv;
private Button mBtn;
private Button mBtn2;
//声明对象
private NetworkReceiver mNetworkReceiver;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
setListener();
}
private void initData() {
mTv = findViewById(R.id.tv);
mBtn = findViewById(R.id.btn);
mBtn2 = findViewById(R.id.btn2);
//初始化对象并注册网络监听广播
mNetworkReceiver = new NetworkReceiver(MainActivity.this);
}
private void setListener() {
mBtn.setOnClickListener(this);
mBtn2.setOnClickListener(this);
/**监听网络**/
mNetworkReceiver.setOnNetworkListener(new NetworkReceiver.OnNetworkListener() {
@Override
public void available(NetworkInfo networkInfo) {
LogUtil.i("=========有网络====");
ToastUtil.shortShow("有网络");
mTv.setText("有网络");
}
@Override
public void unavailable(NetworkInfo networkInfo) {
LogUtil.i("=========无网络====");
ToastUtil.shortShow("无网络");
mTv.setText("无网络");
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn:
break;
case R.id.btn2:
break;
default:
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//注销网络广播监听
if (mNetworkReceiver != null) {
mNetworkReceiver.onDestroy();
}
}
}
五.效果图和项目结构图
效果图
3.gif
项目结构图
image.png
六.NetworkReceiver 源码
下面来看看NetworkReceiver 源码: