下拉菜单打开或关闭网络后网络状态的判断
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中进行广播接收器的注册,案例如下:
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(); } } }
相关文章推荐
- delphi idhttpsever
- 移动端网络优化
- HttpURLConnection、HttpClient的作用,方法,简介
- Windows 更换网络共享账号
- ios网络协议从http变成https
- <黑马程序员> 第八篇:网络编程
- iOS9 HTTP 不能正常使用的解决办法
- 11月第4周网络安全报告:遭篡改的.COM网站占75.7%
- HTTP协议详解
- Linux socket本地进程间通信之TCP
- HTTPS接口加密和身份认证
- iOS开发-工具:用CornerStone配置SVN,HTTP及svn简单使用说明
- nginx https
- 黑马程序员---网络编程(UDP、TCP)
- HTTPS对网站性能SEO有哪些影响?
- 大型网站的HTTPS实践一:HTTPS协议和原理三
- 大型网站的HTTPS实践一:HTTPS协议和原理二
- 大型网站的HTTPS实践一:HTTPS协议和原理一
- Ubuntu系统中MySQL服务器搭建,用户设置权限,以及允许网络访问
- javaweb学习总结(八)——HttpServletResponse对象(二)