当apk使用的过程中,如果很耗流浪,这时如果网络发生了变化,比如断网了或者由WIFI变成了gprs,这个时候,需要友好的提示用户注意流量。
这个问题,其实用BroadcastReceiver来处理比较容易,因为当网络发生变化的时候系统会监听到action:
“android.net.conn.CONNECTIVITY_CHANGE”
当然,这个地方使用非常驻型的BroadcastReceiver。
要监听的界面:
public static final String CONNECTIVITY_CHANGE_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
private void registerReceiver() {
IntentFilter filter = new IntentFilter();
filter.addAction(CONNECTIVITY_CHANGE_ACTION);
registerReceiver(receiver, filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
BroadcastReceiver
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Constant.CONNECTIVITY_CHANGE_ACTION)){
if(AppUtil.isMobile(MainActivity.this)){
Toast.makeText(MainActivity.this,MainActivity.this.getResources().getString(R.string.network_warning),Toast.LENGTH_SHORT).show();
}
}
};
判断是gprs的方法:
/**
* make true current connect service is TYPE_MOBILE
* @param mContext
* @return
*/
public static boolean isMobile(Context mContext) {
ConnectivityManager connectivityManager = (ConnectivityManager) mContext
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetInfo != null
&& activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
return true;
}
return false;
}