Android-网络监听

Android-网络监听,第1张

概述直接在BaseActivity中引下面代码:private ConnectivityManager.NetworkCallback networkCallback;private ConnectivityManager connectivityManager;//网络监听networkCallback = new NetworkCallbackImpl();NetworkReq...

直接在BaseActivity中引下面代码:

private ConnectivityManager.NetworkCallback networkCallback;private ConnectivityManager connectivityManager;//网络监听networkCallback = new NetworkCallbackImpl();NetworkRequest.Builder builder = new NetworkRequest.Builder();NetworkRequest request = builder.build();connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);connectivityManager.registerNetworkCallback(request,networkCallback);private class NetworkCallbackImpl extends ConnectivityManager.NetworkCallback {        /**         * 网络可用的回调连接成功         */        @OverrIDe        public voID onAvailable(Network network) {            super.onAvailable(network);            mHandler.post(new Runnable() {                @OverrIDe                public voID run() {                    if (mNetErrorVIEw != null) {                        mNetErrorVIEw.setVisibility(VIEw.GONE);                    }                }            });        }        /**         * 实践中在网络连接正常的情况下,丢失数据会有回调         */        @OverrIDe        public voID onLosing(Network network,int maxmsTolive) {            super.onLosing(network,maxmsTolive);        }        /**         * 网络不可用时调用和onAvailable成对出现         */        @OverrIDe        public voID onLost(Network network) {            super.onLost(network);            mHandler.post(new Runnable() {                @OverrIDe                public voID run() {                    if (mNetErrorVIEw != null) {                        mNetErrorVIEw.setVisibility(VIEw.VISIBLE);                    }                }            });        }    }

mNetErrorVIEw 是无网络时显示的一个vIEw,写一个这个vIEw的布局net_status_bar.xml

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:ID="@+ID/net_status_bar_top"    androID:layout_wIDth="match_parent"    androID:layout_height="@dimen/net_height"    androID:background="@drawable/net_warning_bar_bg"    androID:clickable="true"    androID:gravity="center_vertical"    androID:paddingleft="@dimen/padding_normal"    androID:visibility="gone" >    <TextVIEw        androID:ID="@+ID/net_status_bar_info_top"        androID:layout_wIDth="0.0dip"        androID:layout_height="match_parent"        androID:layout_gravity="center_vertical"        androID:layout_marginRight="@dimen/margin_normal"        androID:layout_weight="1.0"        androID:drawableleft="@drawable/net_warning"        androID:drawablepadding="@dimen/padding_normal"        androID:gravity="center_vertical"        androID:text="@string/net_state_info"        androID:textcolor="@color/black"        androID:textSize="@dimen/Font_size_normal" />    <ImageVIEw        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:layout_marginRight="@dimen/margin_normal"        androID:contentDescription="@string/app_name"        androID:src="@drawable/net_warning_redirect"        androID:visibility="gone" /></linearLayout>

再在需要用到网络监听的Activity中继承BaseActivity,再在当前Activity中

mNetErrorVIEw = findVIEwByID(R.ID.net_status_bar_top);

最后在当前Activity的布局中适当的位置引入这个布局文件即可

<include layout="@layout/net_status_bar" />

到此就完成了实时网络监听

 

如果需要已进入就监听到网络,需要在BaseActivity的onResume中监听

 if (!NetUtil.isNetConnected(this)) {            if (mNetErrorVIEw != null) {                mNetErrorVIEw.setVisibility(VIEw.VISIBLE);            }        } else {            if (mNetErrorVIEw != null) {                mNetErrorVIEw.setVisibility(VIEw.GONE);            }        }

监听代码

public static boolean isNetConnected(Context context) {        boolean isNetConnected;        // 获得网络连接服务        ConnectivityManager connManager = (ConnectivityManager) context                .getSystemService(Context.CONNECTIVITY_SERVICE);        NetworkInfo info = connManager.getActiveNetworkInfo();        if (info != null && info.isAvailable()) {//			String name = info.getTypename();            isNetConnected = true;        } else {            isNetConnected = false;        }        return isNetConnected;    }

再在onDestroy中取消注册

connectivityManager.unregisterNetworkCallback(networkCallback);

上面代码中所需要的一些尺寸,图片等可以自行先随意设置,先看效果,后期可换成项目所需的对应资源

 

 

最近自己写了一个小程序,大家可以关注一下,附带源码

搬砖之余看个电影放松,扫码关注,最新,最全的各种影视资源,省去各种VIP,直接观看,你值得拥有

 

总结

以上是内存溢出为你收集整理的Android-网络监听全部内容,希望文章能够帮你解决Android-网络监听所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089525.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存