Android 广播监听网络状态缺陷

广播注册两种方式:静态(AndroidManifest.xml文件中)动态(代码register)

5.0之前 我们都是广播BroadcastReceiver 注册跟网络变化相关的广播 然后判断是连接还是断开 这种方法非常方便 但随着Android的版本迭代 在权限上更加谨慎 广播的方式显得不优雅

7.0 之后

移除了三项隐式广播 因为隐式广播会在后台频繁启动 已经注册监听这些广播的应用 删除这些广播可以提高设备性能 美化用户体验 

Android文档中描述 通过在AndroidManifest.xml中的注册方式 App在前后台都无法接收到广播

通过register的方式 在App运行时可以接收到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中可以通过使用TelephonyManager类来监听基站网络状态。 首先,需要在AndroidManifest.xml文件中添加以下权限: ``` <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> ``` 然后,在需要监听基站网络状态的地方,可以创建一个TelephonyManager对象,并注册一个PhoneStateListener来监听网络状态的变化。示例如下: ``` TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); PhoneStateListener phoneStateListener = new PhoneStateListener() { @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { super.onSignalStrengthsChanged(signalStrength); // 获取基站信号强度等信息 int gsmSignalStrength = signalStrength.getGsmSignalStrength(); int cdmaDbm = signalStrength.getCdmaDbm(); int evdoDbm = signalStrength.getEvdoDbm(); // 进行相应的处理逻辑 // ... } @Override public void onDataConnectionStateChanged(int state, int networkType) { super.onDataConnectionStateChanged(state, networkType); // 获取网络连接状态网络类型 if (state == TelephonyManager.DATA_CONNECTED) { // 网络已连接 } else { // 网络未连接 } // 进行相应的处理逻辑 // ... } }; telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE); ``` 通过以上代码,就可以监听到基站网络状态的变化,可以在相应的回调方法中进行相应的处理逻辑,例如获取基站信号强度等信息,判断网络连接状态等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值