activity--生命周期总结

22.Android禁止屏幕旋转 & 旋转屏幕时保持Act内容?

21.旋转屏幕Act执行的生命周期方法?

12.ActA与 ActB互相跳转生命周期情况?

11.Activity几种情况生命周期?

============

22.Android禁止屏幕旋转 & 旋转屏幕时保持Activity内容?

对android:configChanges属性,一般认为有以下几点:
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

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

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

但是,自从Android 3.2(API 13),
在设置Activity的android:configChanges="orientation|keyboardHidden"
后,还是一样会重新调用各个生命周期的。因为screen size也开始跟着设备的横竖切换而改变。
所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,
如果你想阻止程序在运行时重新加载Activity,除了设置"orientation",你还必须设置"ScreenSize"。
解决方法:
AndroidManifest.xml中设置android:configChanges="orientation|screenSize“

(2)在manifest.xml文件设置android:configChanges="orientation|keyboardHidden|screenSize"切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。
需注意的是,在4.0以后的版本需要加上ScreenSize, 不然不会执行onConfigurationChanged方法.
执行顺序:
onCreate
onStart
onResume
onConfigurationChanged();

1.在应用中固定屏幕方向。
在AndroidManifest.xml的activity中加入:android:screenOrientation=”landscape”属性即可(landscape是横向,portrait是纵向)。


2.随屏幕旋转时,不重新调用onCreate。
当将手机屏幕旋转时,系统会被强制重置启动onCreate方法。
1)修改AndroidManifest.xml。
在activity属性中加入:android:configChanges=”orientation|keyboardHidden| screenSize”
android:configChanges,这个方法主要是负责列出清单,当清单上用户指定的设置改变时,Activity会自己处理这些变化。
orientation,屏幕界面旋转(可能是用户手动旋转的),
【注意:如果你的开发API等级等于或高于13,你还需要设置screenSize,因为screenSize会在屏幕旋转时改变】
keyboardHidden,键盘辅助功能改变;

2)在相对应的Activity中继承重写onConfigurationChanged方法,这个方法将会在我们的应用发生变化时,让我们能随心所谓地进行监听处理。
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE) {
// Nothing need to be done here
} else {
// Nothing need to be done here
}
}
如果在两个if中写其他操作,比如setContentView(),那么当旋转屏幕时,就会重新调用新的view,并且需要重新设定view的内容,而当前的view内容没有保存。什么也不写的话,当前view中的内容会随着屏幕转动而转动,不影响操作,这是我想要的结果。


21.旋转屏幕Activity执行的生命周期方法?

很多时候会用到屏幕旋转时需要对一些数据进行保存,例如当横竖屏区切换时要保存先前屏幕的一些数据和状态,那么在旋转屏幕的时候都会调用activity生命周期的哪些方法呢,运行得出了如下结果:
(1)如果销毁当前的Activity,那么就要重写Activity的两个方法
onSaveInstanceState()保存数据 和 onRestoreInstanceState()还原数据
执行顺序:
onCreate();
onStart();
onResume()
onPause
onSaveInstanceState
onStop
onDestroy

onCreate
onStart
onRestoreInstanceState
onResume

在灭屏时调用的方法
onPause
onSaveInstanceState
onStop

屏幕重新唤醒时调用的方法:
onRestart
onStart
onResume

退出程序时调用的方法:
onPause
onStop
onDestroy 

12.两个Activity之间跳转时必然会执行的是哪几个方法?
一般情况下比如说有两个activity,分别叫A,B。
当在A 里面激活B 组件的时候, A会调用onPause()方法,然后B调用onCreate() ,onStart(), onResume()。
如果这个时候B覆盖了A的窗体, A会调用onStop()方法。
如果B是个透明的窗口,或者是对话框的样式, 就不会调用A的onStop()方法。
如果B已经存在于Activity栈中,B就不会调用onCreate()方法。

11.Activity的几种情况的生命周期?

 11.打开APP,进入ActivityA?

ActA --onCreate();
ActA --onStart();
ActA --onResume();

12.ActivityA跳转到ActivityB
ActA: onPause();
ActB: onCreate();
ActB: onStart();
ActB: onResume();
ActA: onStop();

13.ActivityB按back键返回?
ActB: onPause();
ActA: onRestart();
ActA: onStart();
ActA: onResume();
ActB: onStop();
ActB: onDestroy();


14.ActivityA按back键返回
ActA: onPause();
ActA: onStop();
ActA: onDestroy();

原文地址:https://www.cnblogs.com/awkflf11/p/9196115.html