Android横竖切屏生命周期回调情况
来源:互联网 发布:电脑测温度软件 编辑:程序博客网 时间:2024/06/14 00:52
当未设置android:configChanges=”orientation”时:
第一,首次进入Activity会回调的生命周期是:
第二,竖屏切换为横屏
第三,再从横屏切换为竖屏
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
当设置android:configChanges=”orientation”时:
第一点相同,第二点多打印了onConfigurationChanged,但是高版本并未回调该方法,第三点不再出现两次创建与销毁
总结:
4.0以下版本:
1.不设置 AndroidManifest.xml 文件中的 Activity 元素的 android:configChanges 时,
切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次;
2.设置了 AndroidManifest.xml 文件中的 Activity 元素的
android:configChanges=”orientation”时,
切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次;
3.设置了 AndroidManifest.xml 文件中的 Activity 元素的
android:configChanges=”orientation|keyboardHidden”时,
切屏不会重新调用各个生命周期,只会执行 onConfigurationChanged 方法!
4.0以上版本:
不设置以下配置时,哪怕设置了orientation|keyboardHidden这两个属性:
android:configChanges="orientation|keyboardHidden|screenSize"
不管横竖切屏都会调用如下声明周期
设置了如上属性,Activity不会被重新创建,只会回调onConfigurationChanged方法
三、注意点:
1.当前 Activity 产生事件弹出 Toast 和 AlertDialog 的时候 Activity 的生命周期不会有改变!
2.Activity 运行时按下 home 键(跟被完全覆盖是一样的):
代码如下:
onSaveInstanceState –> onPause –> onStop
onRestart –> onStart –> onResume
3.Activity 未被完全覆盖只是失去焦点:
代码如下:
onPause –> onResume
四、相关权限 <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
通常我们去切换屏幕方向是不希望Activity被重新创建,这时就需要对一些属性进行设置,或者使用代码设置。
设置屏幕方向代码代码
1、配置screenOrientation属性,注意配置在application里面无效,必须配置在activity里面
<activity android:name=".TestActivity" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden|screenSize" android:launchMode="singleTop" android:theme="@style/AppTheme.NoActionBar" />
2、代码设置横竖屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
3、判断横竖屏状态
系统API中的定义:
int ORIENTATION_PORTRAIT = 1; 竖屏
int ORIENTATION_LANDSCAPE = 2; 横屏
//获取屏幕的方向 ,数值1表示竖屏,数值2表示横屏int screenNum = getResources().getConfiguration().orientation;
解释:
portrait 翻译是肖像的意思,肖像一般都是竖直方向
landscape 翻译是景观的意思,景物一般是横着方向,看得广阔点
configChanges属性可以设置多个值,中间使用竖线分割,常用前三条
1、 orientation 屏幕在纵向和横向间旋转
2、keyboardHidden 键盘显示或隐藏
3、screenSize 屏幕大小改变了
4、fontScale 用户变更了首选的字体大小
5、locale 用户选择了不同的语言设定
6、keyboard 键盘类型变更,例如手机从12键盘切换到全键盘
7、touchscreen或navigation 键盘或导航方式变化,一般不会发生这样的事件
screenOrientation有如下选项,只能选择一个值,通常设置都是横屏或竖屏,这里只是设置的一个默认值,屏幕的方向还是可以通过代码改变
1、unspecified 默认值,由系统判断状态自动切换
2、landscape 横屏
3、portrait 竖屏
4、user 用户当前设置的orientation值
5、behind 下一个要显示的Activity的orientation值
6、sensor 使用传感器 传感器的方向
7、nosensor 不使用传感器 基本等同于unspecified
- Android横竖切屏生命周期回调情况
- android 横竖屏生命周期
- Android 横竖屏切换生命周期
- Android 横竖屏切换生命周期
- android横竖屏切换生命周期
- Android 横竖屏切换生命周期
- android 横竖屏切换生命周期
- android 横竖屏切换生命周期
- android横竖屏切换,activity生命周期的回调
- android 横竖屏切换,activity的生命周期
- Android 横竖屏切换 Activity生命周期log
- Android横竖屏切换的生命周期
- android 横竖屏切换生命周期详解
- android 横竖屏切换生命周期详解
- android横竖屏切换activity生命周期变化
- Android横竖屏切换的生命周期
- android横竖屏切换的生命周期解析
- Android横竖屏切换时生命周期变化
- groub相关总结
- Java Java 9新特性
- 定时任务
- 知识回顾(一)--类的封装
- 复合,继承,委托
- Android横竖切屏生命周期回调情况
- fopen打开文件mode设置缺少‘b’引发的血案
- 分享四种将PDF文件转换为CAD文件的方法,总有一个方法适合你
- Linux下安装redis
- 笔记事件响应方法
- 一个python写的小游戏
- 软考错题合集之14-05-AM
- Linux内核同步机制之一----spin lock
- Fragment详解系列二ViewPager