Android中监听判断网络连接状态的方法_Android

在无网或网速差的状态下,没必要去连接服务器。
你可以使用 ConnectivityManager 来判断是否连到网络,以及网络类型。

判断是否有网络连接

下面的代码用ConnectivityManager查询是活动网络连接判断是否有Internet连接。

复制代码 代码如下:

ConnectivityManager cm =
        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
 
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
                      activeNetwork.isConnectedOrConnecting();

判断Internet连接类型

连接类型可能是移动数据,WiMax,WIFI,以太网。可以通过类似下面的方法查询网络类型:

复制代码 代码如下:

boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;

移动数据比WIFI耗电,应该注意。下载大文件应该延迟到有wifi以后。

监听连接改变

ConnectivityManager会在连接改变时发送广播”android.net.conn.CONNECTIVITY_CHANGE”,所以,注册,监听一下这个广播就可以:

复制代码 代码如下:

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>

每次从移动数据和WIFI间改变时都会触发,这个改变可能会很频繁。最好是只有当你之前暂停下载或更新的时候,才去监听这个广播。通常在下载或更新前先检查一次网络连接。
下节讲切换开关在manifest里声明的接收器.

时间: 2025-01-28 09:53:17

Android中监听判断网络连接状态的方法_Android的相关文章

Android中判断网络连接状态的方法_Android

App判断用户是否联网是很普遍的需求,实现思路大概有下面几种 利用Android自带的ConnectivityManager类 有时候连上了wifi,但这个wifi是上不了网的,我们可以通过ping www.baidu.com来判断是否可以上网 也可以利用get请求访问www.baidu.com,如果get请求成功,说明可以上网 1.判断网络是否已经连接 // check all network connect, WIFI or mobile public static boolean isNe

Android中监听系统网络连接打开或者关闭的实现代码

很简单,所以直接看代码复制代码 代码如下:package xxx; import android.content.BroadcastReceiver;  import android.content.Context;  import android.content.Intent;  import android.net.ConnectivityManager;  import android.net.NetworkInfo; 复制代码 代码如下:public class NetstateRece

Android中监听软键盘显示状态实现代码_Android

/**监听软键盘状态 * @param activity * @param listener */ public static void addOnSoftKeyBoardVisibleListener(Activity activity, final OnSoftKeyBoardVisibleListener listener) { final View decorView = activity.getWindow().getDecorView(); decorView.getViewTree

Android中监听短信的两种方法_Android

1.监听广播 缺点,因为优先级的原因可能接收不到. 代码: public static final String TAG = "ImiChatSMSReceiver"; public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED"; public void onReceive(Context context, Intent intent) { if

Android中判断网络连接状态的方法

App判断用户是否联网是很普遍的需求,实现思路大概有下面几种 利用Android自带的ConnectivityManager类 有时候连上了wifi,但这个wifi是上不了网的,我们可以通过ping www.baidu.com来判断是否可以上网 也可以利用get请求访问www.baidu.com,如果get请求成功,说明可以上网 1.判断网络是否已经连接 // check all network connect, WIFI or mobile public static boolean isNe

Android中检查、监听电量和充电状态的方法_Android

当你在更改后台更新频率来减少这些更新对电池寿命的影响时,检查当前电量和充电状态是一个好的开始. 电池寿命通过剩余电量和充电状态来影响应用更新的执行.当用交流电充电时,执行更新操作对设备的影响是微不足道的,所以在大多数案例里,你可以把更新频率调到最快.如果设备不在充电,降低更新频率可以帮助延长电池寿命. 类似的,你可以检查电池剩余电量级别,在电量低时,应该降低更新频率甚至停止更新. 注:此处的更新,指的是类似发送心跳包的动作,或者定时更新内容.并非仅仅指更新应用版本.如果是用户动作,比如翻页刷新,

Android中监听软键盘显示状态实现代码

/**监听软键盘状态 * @param activity * @param listener */ public static void addOnSoftKeyBoardVisibleListener(Activity activity, final OnSoftKeyBoardVisibleListener listener) { final View decorView = activity.getWindow().getDecorView(); decorView.getViewTree

Android中监听Home键的4种方法总结_Android

昨天需要处理一个问题,需要监听home键.最开始想到使用onKeydonwn这个方法.但是发现home不能这样处理,onKeydonwn可以处理菜单键和back键,但home不能.因为home键是系统键,情况特殊一些. 看了一下网上的资料,说下面的方法可以.(其实不行) 复制代码 代码如下: @Override     public void onAttachedToWindow() {         // TODO Auto-generated method stub         Log

Android中利用NetworkInfo判断网络状态时出现空指针(NullPointerException)问题的解决方法_Android

在Android中,很多人会用如下的方法判断当前网络是否可用: /** * 获取当前网络状态(是否可用) */ public static boolean isNetworkAvailable() { boolean isAalable = false; ConnectivityManager connManager = (ConnectivityManager) BaseApplication.getApplication().getSystemService(Context.CONNECTI