四. 网络实时监测广播

前言

在Android的实际开发过程中,我们偶尔会用到实时监听网络状态,那么这时候,广播这个神奇的监听器就可以派上用场了。今天我们就来讲讲我自己封装的一个网络实时监测广播工具类 — NetworkReceiver 的使用。

今天涉及内容:

  1. NetworkReceiver 用途
  2. NetworkReceiver使用前置
  3. NetworkReceiver基本方法介绍及使用
  4. MainActivity中监听网络实时状态代码
  5. 效果图和项目结构图
  6. 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 源码:

还有 31% 的精彩内容
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
支付 ¥3.00 继续阅读

推荐阅读更多精彩内容