关于Activity的横竖屏切换引起的生命周期变化的问题

原创 2015年11月19日 19:27:03

问题由来:一般我们拿着手机都是竖屏操作或观看,但有时会躺着,横屏去操作,这时,横竖屏的切换就对Activity的生命周期产生了影响。

一:我们进行横竖屏切换后,查看log日志

启动Activity初始界面为竖屏显示

竖屏:

查看log


正常的启动过程:依次执行  创建 --->onCreate()    可见状态---> onStart()  onResume()

下面 按住Ctrl+F11   切换到横屏


查看log


可以看出,切换到横屏后,执行了  不可见--->onPause(),onStop()        销毁--->onDestroy() 此时竖屏的Activity销毁结束

然后又重新创建了一遍Activity      依次执行了   创建---->onCreate()         可见----->onStart(),onResume()

二 :产生问题

 那么这儿就会出现一个问题,竖屏切换到横屏会把竖屏的Activity给销毁了,此时竖屏Activity的数据销毁了,而横屏的Activity又是重新创建的,这样数据丢失肯定是不行的。

三  解决问题

那怎么处理这个问题呢?

答:用onSaveInstanceState()回调方法

例如这样:把你想要传递的数据通过这个方法保存起来,这个方法在竖屏Activity暂停后执行。

protected void onSaveInstanceState(Bundle outState) {
    	// TODO Auto-generated method stub
    	super.onSaveInstanceState(outState);
    	outState.putString("name", "zhuminquan");
    	Log.e("TAG", "MainActivity onSaveInstanceState() method is executed");
    }
当竖屏切换到横屏时,查看log

前面我们已经把数据保存到了一个Bundle对象中,那怎么得到这个数据呢,你可以这样做

在onCreate(Bundle savedInstanceState)方法添加一句判断语句,若判断savedInstanceState不为空,那么就把这个数据拿出来。

例如这样

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textview = (TextView)this.findViewById(R.id.textview);
        if(savedInstanceState!=null){
        	String str = savedInstanceState.getString("name");
        }
        Log.e("TAG", "MainActivity onCreate() method is executed");
    }




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

横竖屏切换等各种情况下Activity生命周期的变化。

对不同切换状态下Activity的生命周期做一个记录,一来作为之前的总结,二来方便查询和总结,三呢还可以和大家交流下,一举多得。

横竖屏切换时activity生命周期变化的总结

activity的生命周期变化想必大家都耳熟能详,但是横竖屏切换时activity生命周期变化很多人肯定还很迷糊,最近在网上查找的资料总结的大都不全面,最后在博客园上看到一哥们总结的挺好, so,自己...

横竖屏切换时Activity的生命周期变化

近期准备找工作

Activity横竖屏切换时生命周期变化

关于Android切换横竖屏调用生命周期,我在网上搜索一下,基本上都是一个统一的说法,分为以下三种情形。 1.        默认状态下: 切换横屏时会调用一次生命周期,切换竖屏时会调用两次生命周...

横竖屏切换时Activity生命周期的变化

一、不设置Activity的android:configChanges属性 正常竖屏启动 E/Main10Activity: onCreate: E/Main10Activity:...

横竖屏切换时重构Activity生命周期的问题---android:configChanges的用法

android:configChanges,这个方法主要是负责列出清单,当清单上用户指定的设置改变时,Activity会自己处理这些变化。  orientation,屏幕界面旋转(可能是用户手动旋转的...

Android 面试之横竖屏切换的Activity生命周期

Android 面试之横竖屏切换的Activity生命周期

android4.0.3横竖屏切换时的activity的生命周期

图中所做的操作是:打开-》竖变横-》横变竖-》返回键 package com.example.testexample; import android.app.Activity; import an...

android-----横竖屏切换对Activity生命周期的影响

前面我们分析过Activity的生命周期(见:android-----Activity生命周期),但是在现实应用中我们可能会对手 机进行横竖屏切换,那么这样的切换对Activity的生命周期有什么影响...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)