生命周期
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
分享到:
相关推荐
本文将详细介绍如何在uni-app中实现横屏竖屏的设置与切换。 一、uni-app的屏幕方向基础概念 1. 屏幕方向:手机或平板设备的屏幕可以处于竖屏(Portrait)或横屏(Landscape)状态。通常,竖屏是手机默认的显示方式...
综上所述,要实现“竖屏转横屏的Activity切换效果”,开发者需要掌握屏幕方向的控制、动画的创建与应用、生命周期管理以及资源适配等技术,同时,对Android系统的行为有深入理解,才能确保用户在横竖屏切换时获得...
在Android应用开发中,...理解并妥善处理横竖屏切换下的Activity生命周期,是Android开发中的重要技能,它有助于提高应用的稳定性和用户体验。通过合理的设计和编程,开发者可以让应用在任何屏幕方向下都能流畅运行。
综上所述,“LandscapePortraitDemo”项目将展示如何在Android Studio中实现Activity的横竖屏切换,处理WebView的加载,以及对Activity生命周期的精细控制。通过对这些关键点的掌握,开发者能够构建出适应各种屏幕...
当设备从竖屏切换到横屏,或反之,Android系统会根据设定的配置来处理Activity的生命周期。这个过程是Android为了保持用户界面的正确展示和数据的一致性而采取的一种策略。 标题“设备旋转与Activity生命周期”所指...
android activity 执行屏幕横竖屏切换的时候activity声明周期执行的竖屏的时候点击横屏 09-04 15:54:27.675: I/yxd(6708): 应用程序执行了============onPause===方法===>> 09-04 15:54:27.685: I/yxd(6708): 应用...
- 用户从竖屏切换到横屏时,系统默认会销毁当前Activity并重新创建,调用`onDestroy()`和`onCreate()`,然后依次调用`onStart()`和`onResume()`。 - 为了避免这种行为,开发者可以在AndroidManifest.xml中针对...
当用户在使用设备时,比如从竖屏切换到横屏,或者反之,系统会自动调用Activity的相关方法,来管理和恢复应用的状态。这个过程涉及到一系列生命周期回调,对开发者来说,理解这些回调如何工作以及如何适当地处理它们...
总结起来,Android中的横屏竖屏切换主要是通过创建针对不同屏幕方向的布局文件来实现的,系统会自动选择合适的布局。然而,屏幕旋转可能导致Activity的生命周期发生变化,因此需要妥善处理数据保存与恢复,以保证...
接下来,我们来看横竖屏切换对Activity生命周期的影响: 1. **不指定`android:configChanges`**:默认情况下,当设备横竖屏切换时,系统会销毁当前Activity并重新创建,这会导致`onCreate()`、`onStart()`和`...
本压缩包包含60个经典的Android开发案例,旨在帮助开发者深入理解并掌握Activity的生命周期以及横竖屏切换的处理方法。 首先,我们要理解Activity的生命周期。Activity有七个主要状态:创建(Created)、启动...
### 屏幕翻转与Activity生命周期详解 ...通过以上分析,我们可以看到屏幕方向变化对Activity生命周期的影响以及如何通过配置来优化这一过程。这对于开发出高质量的应用程序来说是非常重要的一步。
Android系统允许应用在设备旋转时自动调整布局,这得益于Android的资源配置和Activity生命周期管理。当设备从横屏切换到竖屏,或者反过来,Android会调用Activity的相关生命周期方法,例如`onConfigurationChanged()...
在Android开发中,屏幕方向的变化是开发者经常遇到...总之,处理Android横竖屏切换需要理解Activity生命周期、资源适配和状态保存等机制。通过合理的配置和设计,可以确保应用在不同屏幕方向下都能提供良好的用户体验。
在Android系统中,当手机从竖屏切换到横屏,或者反过来,系统默认会销毁当前的Activity并重建一个新的,以适应新的屏幕方向。在这个过程中,`onSaveInstanceState(Bundle outState)`方法会被调用,系统会将Activity...
2. 在Activity中重写`onConfigurationChanged(Configuration newConfig)`方法,以便在横竖屏切换时,我们可以在这里更新布局或者处理其他配置变化。 对于横竖屏布局不一致的情况,可以创建不同的布局资源文件。例如...
默认情况下,这些变更会导致Activity生命周期中的`onDestroy()`和`onCreate()`方法被调用。 2. **重用Activity状态**:为了保留Activity的状态,开发者可以使用`onSaveInstanceState()`方法来保存关键数据。当...
5. **处理生命周期**:在横竖屏切换时,Fragment的生命周期会被影响。需要注意在`onPause()`、`onResume()`等方法中处理相关的业务逻辑和UI更新,以确保状态的一致性。 6. **数据持久化**:对于复杂的业务逻辑,...