利用广播监听网络状态,然后刷新listView、gridView、RecyclerView等。

本文介绍了一个简单的网络状态监听实现方案,包括创建工具类NetUtil、自定义广播接收器MyBroadcastReceiver及实现网络状态变化接口NetEvent的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,准备: 1,创建netUtils工具类。 2,自定义广播类MyBoastcastRececiver。 3,自定义接口NetEvent。 4,在自己要监听网络变化的类中,去实现自己定义的接口。 二,具体步骤: 1,创建netUtils工具类如下: public class NetUtil { private static final int NETWORK_MOBILE = 0; private static final int NETWORK_WIFI = 1; private static final int NETWORK_NONE = -1;

public static int getNetWorkState(Context context) {
    ConnectivityManager connectivityManager = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager
            .getActiveNetworkInfo();
    if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
        if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) {
            return NETWORK_WIFI;
        } else if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_MOBILE)) {
            return NETWORK_MOBILE;
        }
    } else {
        return NETWORK_NONE;
    }
    return NETWORK_NONE;
}
复制代码

} 2,自定义广播类MyBoastcastRececiver如下: public class MyBoastcastRececiver extends BroadcastReceiver{ private NetEvent netEvent; @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) { int netWrokState = NetUtil.getNetWorkState(context); if (netEvent != null){ netEvent.onNetChange(netWrokState); }
} } public void setNetEvent(NetEvent netEvent) { this.netEvent = netEvent; } }
3,自定义接口NetEvent如下: public interface NetEvent { void onNetChange(int Mobile); } 4,在自己要监听网络变化的类中,去实现自己定义的接口如下: a,让要监听的类实现接口NetEvent,然后实现其方法; b,先动态注册你的广播如下: private int netMobile; private MyReceiver myReceiver; private boolean neta; @Override public void onStart() { // TODO Auto-generated method stub super.onStart(); if (myReceiver == null) { myReceiver=new MyReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); getActivity().registerReceiver(myReceiver, filter); myReceiver.setNetEvent(this); } } c,在此方法中创建Connect(); @Override public void onNetChange(int Mobile) { // TODO Auto-generated method stub this.Mobile = Mobile; Connect(); } d,在Connect();中去判断自己连接网络的类型以及状态; switch (netMobile) { case 1: Toast.makeText(getActivity(), "已连上wifi", Toast.LENGTH_LONG).show(); if(isok){ initData(); notifyDataSetChanged(); } break; case 0: Toast.makeText(getActivity(), "已连上移动网络", Toast.LENGTH_LONG).show(); if(isok){ initData(); Adapter.notifyDataSetChanged(); } break; case -1: Toast.makeText(getActivity(), "网络不可用", Toast.LENGTH_LONG).show(); isok=true; break; } 完成!!!!!!!!! PS:可能还存在一些潜在的bug,自己的项目可以实现其功能,我是一个新手,错了勿喷!

转载于:https://juejin.im/post/5af3bc7b6fb9a07aa34a453e

widget 内存泄漏如何避免和修改03-07 20:12:32.610 20343 20343 E CrashReport: java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 549112 bytes 03-07 20:12:32.610 20343 20343 E CrashReport: --------- Stack trace --------- 03-07 20:12:32.610 20343 20343 E CrashReport: 1. android.appwidget.AppWidgetManager.updateAppWidget(AppWidgetManager.java:679) 03-07 20:12:32.610 20343 20343 E CrashReport: 2. com.neusoft.widget.NavigationWidgetProvider.A(NavigationWidgetProvider.java:3) 03-07 20:12:32.610 20343 20343 E CrashReport: 3. com.neusoft.widget.NavigationWidgetProvider.c(NavigationWidgetProvider.java:1) 03-07 20:12:32.610 20343 20343 E CrashReport: 4. com.neusoft.widget.NavigationWidgetProvider$c.b(NavigationWidgetProvider.java:10) 03-07 20:12:32.610 20343 20343 E CrashReport: 5. com.neusoft.navigation.viewmodel.manager.v$a.o(NavigationManager.java:8) 03-07 20:12:32.610 20343 20343 E CrashReport: 6. x4.v0.onTurnInfoUpdated(NeuGuidanceListener.java:32) 03-07 20:12:32.610 20343 20343 E CrashReport: 7. com.neusoft.nmasdk.guidance.NMAGuidanceThriftListenerImpl.lambda$onTurnInfoUpdated$9(NMAGuidanceThriftListenerImpl.java:2) 03-07 20:12:32.610 20343 20343 E CrashReport: 8. com.neusoft.nmasdk.guidance.NMAGuidanceThriftListenerImpl.e0(Unknown Source:0) 03-07 20:12:32.610 20343 20343 E CrashReport: 9. com.neusoft.nmasdk.guidance.n0.run(Unknown Source:6) 03-07 20:12:32.610 20343 20343 E CrashReport: 10. android.os.Handler.handleCallback(Handler.java:883) 03-07 20:12:32.610 20343 20343 E CrashReport: 11. android.os.Handler.dispatchMessage(Handler.java:100) 03-07 20:12:32.610 20343 20343 E CrashReport: 12. android.os.Looper.loop(Looper.java:214) 03-07 20:12:32.610 20343 20343 E CrashReport: 13. android.app.ActivityThread.main(ActivityThread.java:7386) 03-07 20:12:32.610 20343 20343 E CrashReport: 14. java.lang.reflect.Method.invoke(Native Method) 03-07 20:12:32.610 20343 20343 E CrashReport: 15. com.android.internal.os.
最新发布
03-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值