`
stulpnn
  • 浏览: 68150 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 横竖屏切换 activity变化详解

阅读更多
生命周期
Android 系统在Activity 生命周期中加入一些钩子,我们可以在这些系统预留的钩子中做一些事情。
例举了 7 个常用的钩子:
protected void onCreate(Bundle savedInstanceState)
protected void onStart()
protected void onResume()
protected void onPause()
protected void onStop()
protected void onRestart()
protected void onDestroy()

简要说明:
onCreate(Bundle savedInstanceState):创建activity时调用。设置在该方法中,还以Bundle中可以提出用于创建该 Activity 所需的信息。
onStart():activity变为在屏幕上对用户可见时,即获得焦点时,会调用。
onResume():activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。
onPause():activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的。。
onStop():activity被停止并转为不可见阶段及后续的生命周期事件时,即失去焦点时调用。
onRestart():重新启动activity时调用。该活动仍在栈中,而不是启动新的活动。
onDestroy():activity被完全从系统内存中移除时调用,该方法被调用可能是因为有人直接调用 finish()方法 或者系统决定停止该活动以释放资源。

横竖屏切换

1 切换到横屏
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume

2 切换到竖屏,销毁了两次
onSaveInstanceState
onPause
onStop
onDestroyonCreate
onStart
onRestoreInstanceState
onResume
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume


3 修改AndroidManifest.xml,把该Activity添加 android:configChanges="orientation",切横屏,只销毁一次。

onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume

4 再切回竖屏,发现不会再打印相同信息,但多打印了一行onConfigChanged
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onConfigurationChanged

5 更改 android:configChanges="orientation" 改成 android:configChanges="orientation|keyboardHidden",切横屏,就只打印onConfigChanged

onConfigurationChanged

6 切回竖屏

onConfigurationChanged
onConfigurationChanged

总结:

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

转自:http://www.blogjava.net/lincode/archive/2011/09/16/358768.html
分享到:
评论

相关推荐

    Android横竖屏切换及其对应布局加载问题详解

    总结起来,处理Android横竖屏切换的关键在于理解屏幕方向变化对`Activity`生命周期的影响,以及如何通过布局文件分隔和`onConfigurationChanged()`方法来适配不同屏幕方向。正确地管理这些方面可以使应用在横竖屏间...

    Android Activity横竖屏切换生命周期详解

    关于Activity生命周期和横竖屏切换时,生命周期的执行过程,网上有很多文章。但是都写的很模糊,并且不完善。一般的我们去切换屏幕方向都是不希望Activity被重新创建,这时就需要对一些属性进行设置,或者使用代码...

    Android 屏幕横竖切换详解

    在Android开发中,屏幕横竖切换是一个常见的需求,它涉及到用户界面布局的适应性和用户体验。本文将深入探讨如何处理Android应用程序中的...开发者应根据具体的应用场景选择合适的策略,以实现最佳的横竖屏切换效果。

    Android四大组件之Activity详解

    Android四大组件之Activity详解 Android四大组件中的Activity是最基本也是最重要的组件之一。Activity是用户与应用程序交互的入口点,负责处理用户的交互请求,并将结果返回给用户。今天,我们将深入探讨Activity...

    详解Android中Activity运行时屏幕方向与显示方式

    还有就是在我们用手机观看视频时,随意的进行横竖屏切换,但播放进度不会随着屏幕的转换而从头开始播放,为了实现这个功能,我们就需要在Activity转换时对当前数据进行保存。 现在根据以上两种需求,个人提出以下...

    互联网公司android面试题和答案.pdf

    在横竖屏切换时,Activity 的生命周期也会发生变化。如果不设置 android:configChanges 属性,那么横竖屏切换时 Activity 将重新调用各个生命周期。如果设置 android:configChanges="orientation" 属性,那么横竖屏...

    android面试题和答案

    2. **设置android:configChanges="orientation"**:即使横竖屏切换,Activity也不会被销毁重建,只会调用`onConfigurationChanged()`方法。 3. **设置android:configChanges="orientation|keyboardHidden"**:除了...

    android 判断横竖屏问题的详解

    通过设置`android:configChanges="orientation"`,告诉Android系统,Activity会自行处理横竖屏切换。这时,系统不会重新创建Activity,而是调用`onConfigurationChanged(Configuration newConfig)`方法。在该方法中...

    Android面试题附答案

    5. **横竖屏切换时Activity的生命周期如何变化?** 默认情况下,横竖屏切换会导致Activity重新创建,执行onDestroy()、onCreate()等一系列生命周期方法。但可以通过在AndroidManifest.xml中设置activity的android:...

    张泽华Android面试题整理

    横竖屏切换时Activity的生命周期变化取决于`AndroidManifest.xml`中Activity配置的`android:configChanges`。如果不设置,系统会默认销毁并重建Activity;如果设置了`orientation|keyboardHidden`,则只调用`...

    Android Activity生命周期和堆栈管理的详解

    四、手机的横竖屏切换,android的生命周期方法的重新执行:onPause、onstop、ondestroy、oncreate、onstart、onresume。如果想横竖屏切换时,不重新走生命周期,需要在清单文件中配置属性:configChanges 也可以设置...

    Android面试题21

    3. 横竖屏切换时Activity的生命周期 - 不设置`android:configChanges`: 切换屏幕方向时,Activity会销毁并重新创建,生命周期执行从`onCreate()`到`onDestroy()`的过程,两次对于竖屏到横屏,一次对于横屏到竖屏。 ...

    横竖屏、传感器

    ### 横竖屏切换与传感器应用详解 #### 一、横竖屏切换技术要点解析 **1. 加载布局** 在开发移动应用时,为了适应不同设备的屏幕尺寸及方向变化,通常需要实现横竖屏自动切换的功能。具体而言,开发者可以通过在...

    android面试题集锦

    2. **横竖屏切换时Activity的生命周期**: - 若未指定`android:configChanges`,切换屏幕方向会重新创建Activity,横屏和竖屏切换各调用一次生命周期。 - 设置`android:configChanges="orientation"`,切换时只会...

    传智播客Android面试题30页 精品

    横竖屏切换时,Activity的生命周期变化取决于清单文件中android:configChanges的设置。未设置时,切屏会重新调用生命周期方法;设置为"orientation|keyboardHidden",则仅执行onConfigurationChanged(),如在游戏...

Global site tag (gtag.js) - Google Analytics