您的位置:首页 > 理论基础 > 计算机网络

下拉菜单打开或关闭网络后网络状态的判断

2015-12-07 11:36 435 查看
当Android状态栏完全下拉以后会执行Activity的以下几个生命周期:

1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。

2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。

3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。

4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。

5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

需要对网络进行判断时,我们可以在onPause中进行反注册广播接收器,而取消在onDestory中的反注册(注意:此时如果在onDestory中进行反注册会报:receive not resigter),在onResume中进行广播接收器的注册,案例如下:

@Override
protected void onCreate(){
super.onCreate();
NetState receiver = new NetState();
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
}

@Override
protected void onResume() {
super.onResume();
registerReceiver(receiver,filter);
}

@Override
protected void onPause() {
super.onPause();
unregisterReceiver(receiver);
}
广播接收注册类:

class NetState extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent arg1) {
ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo gprs = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(!gprs.isConnected() && !wifi.isConnected())
{
Toast.makeText(LocationService.this,"网络连接断开,请检查网络",Toast.LENGTH_SHORT).show();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: