判断andorid开发中网络状态变化

本文介绍了在Android开发中如何使用ConnectivityManager监控网络状态,包括GPRS、WIFI、UMTS等。主要方法包括获取活跃网络信息、判断网络是否可用、是否连接、是否漫游及是否计费。此外,还提及了网络类型的识别,如移动数据和WIFI数据。
摘要由CSDN通过智能技术生成

ConnectivityManager有四个主要任务:
1、监听手机网络状态(包括GPRS,WIFI, UMTS等)
2、手机状态发生改变时,发送广播
3、当一个网络连接失败时进行故障切换
4、为应用程序提供可以获取可用网络的高精度和粗糙的状态

android平台手机来说:可能会存在4中状态

  1.无网络(这种状态可能是因为手机停机,网络没有开启,信号不好等原因)

  2.使用WIFI上网

  3.CMWAP(中国移动代理)

  4.CMNET上网

常用方法
ConnectivityManager mConnManager = (ConnectivityManager)

context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnManager.getActiveNetworkInfo();

然后结合判断其状态来判断当前网络状况

getActiveNetworkInfo()
返回有关当前活动的默认数据网络的详细信息。 当连接时,此网络是传出连接的默认路由

。您应该始终检查isConnected()当没有默认值时,这可能返回null

isConnected和isAvailable的 区别
isAvailable()—指示是否可以进行网络连接。
网络不可用的状态
当持续或半持久状态阻止连接网络的可能性
(1)该设备不在任何此类网络的覆盖范围内。
(2)设备位于家庭网络以外的网络(即漫游)上
(3)数据漫游已被禁用
(4)启用了飞行模式

isConnected()–牵涉到网络读写数据时,请调用此方法
指示网络连接是否存在,并且可以建立连接和传递数据。在尝试执行数据事务之前,始终

调用此方法。
isConnectedOrConnecting()
指示网络连接是否存在或正在被建立中。 这对于需要的应用程序是有好处的
做任何与网络相关的数据,而不是读或写数据

isRoaming()
指示设备当前是否正在该网络上漫游。当返回true时,建议在此网络上使用数据

isMetered()
如果此网络被计量,则返回。 网络被分类为计量
当用户对该连接上的大量数据使用敏感,当因为货币成本,数据限制或电池/性能问题。
您在进行大量数据传输之前应该检查一下,并警告用户或延迟操作,直到另一个网络可用

isFailover()
指示当前尝试连接到网络由ConnectivityManager尝试故障切换到这一点网络与其他网络断
开连接,如果这是故障切换尝试则返回true

通过判断mNetworkInfo.getType()是以下哪一种类型

ConnectivityManager.TYPE_MOBILE:移动数据
ConnectivityManager.TYPE_WIFI:WIFI数据

public class NetWorkUtil {
   
    private static final int CMNET = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值