博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NetStateReceiver【监听网路状态变化】
阅读量:6988 次
发布时间:2019-06-27

本文共 3511 字,大约阅读时间需要 11 分钟。

版权声明:本文为HaiyuKing原创文章,转载请注明出处!

前言

用来监控网络变化时的处理,一般用来toast提示或者扩展为其他作用。

效果图

  

代码分析

NetStateReceiver:网络改变时的广播器

NetUtils:获取网络类型

使用步骤

一、项目组织结构图

注意事项:

1、导入类文件后需要change包名以及重新import R文件路径

2、Values目录下的文件(strings.xml、dimens.xml、colors.xml等),如果项目中存在,则复制里面的内容,不要整个覆盖

二、导入步骤

将netstatus包复制到项目中

在AndroidManifest.xml文件中声明权限以及静态注册NetStateReceiver【注意,路径需要跟实际项目的路径保持一致】

在BaseActivity.java中添加以下代码

package com.why.project.netstatereceiverdemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import com.why.project.netstatereceiverdemo.utils.ToastUtil;import com.why.project.netstatereceiverdemo.utils.netstatus.NetChangeObserver;import com.why.project.netstatereceiverdemo.utils.netstatus.NetStateReceiver;import com.why.project.netstatereceiverdemo.utils.netstatus.NetUtils;/** * Created by HaiyuKing * Used Activity基类 */public abstract class BaseActivity extends AppCompatActivity {    private static final String TAG = "BaseActivity";    /*=================网络变化的广播器=====================*/    protected NetChangeObserver mNetChangeObserver;    @Override    protected void onCreate(Bundle savedInstanceState) {        /*=================网络变化的广播器=====================*/        registerNetStateChange();//注册网络变化的广播器        super.onCreate(savedInstanceState);    }    protected void onDestroy() {        super.onDestroy();        /*=================网络变化的广播器=====================*/        NetStateReceiver.removeRegisterObserver(this.mNetChangeObserver);    }    /*==========网络变化的广播器=============*/    private void registerNetStateChange() {        if (this.mNetChangeObserver == null) {            this.mNetChangeObserver = new NetChangeObserver() {                public void onNetConnected(NetUtils.NetType netType) {                    super.onNetConnected(netType);                    onNetworkConnected(netType);                    if (NetUtils.isMobileConnected(getApplicationContext())){                        ToastUtil.showShortToast("您当前正在使用运营商网络");                    }                    if(NetUtils.isWifiConnected(getApplicationContext())){                        ToastUtil.showShortToast("您当前正在使用无线网络");                    }                }                public void onNetDisConnect() {                    super.onNetDisConnect();                    onNetworkDisConnected();                    ToastUtil.showShortToast("网络无法连接,请检查网络设置");                }            };            NetStateReceiver.registerObserver(this.mNetChangeObserver);// 声明mNetChangeObserver注册到网络状态广播接收器中        }    }    protected abstract void onNetworkConnected(NetUtils.NetType netType);    protected abstract void onNetworkDisConnected();}

本Demo搭配《》使用

三、使用方法

package com.why.project.netstatereceiverdemo;import android.os.Bundle;import com.why.project.netstatereceiverdemo.utils.netstatus.NetUtils;public class MainActivity extends BaseActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    @Override    protected void onNetworkConnected(NetUtils.NetType netType) {    }    @Override    protected void onNetworkDisConnected() {    }}

混淆配置

参考资料

项目demo下载地址

你可能感兴趣的文章
linux-vsftp
查看>>
Linux内核抢占与中断返回【转】
查看>>
Linux 文件操作监控inotify功能及实现原理【转】
查看>>
Spring下redis的配置
查看>>
vs2010在进行数据架构比较时报'text lines should not be null'错误
查看>>
jeecg入门操作—表单界面
查看>>
网页音乐制作器(网页钢琴)-- MusicMaker
查看>>
oracle优化:避免全表扫描(高水位线)
查看>>
对超级课程表产品的一些个人小看法
查看>>
词频统计 效能分析
查看>>
Linux终极shell-zsh的完美配置方案!——oh-my-zsh
查看>>
MYSQL 函数、自定义函数 function
查看>>
Python爬虫之简单爬虫框架实现
查看>>
python isinstance内建函数的使用
查看>>
老师不能把你怎样,但外面的世界可以!
查看>>
css居中div的几种常用方法
查看>>
css3
查看>>
C# Window编程随记——ClickOnce程序部署
查看>>
小白系列-免费广告路由器web认证设置(2)
查看>>
Top 16 Java 应用类 - 这些功能再也不用自己写了
查看>>