Android系统横竖屏切换时候Activity的生命周期
来源:互联网 发布:下载炒股票软件 编辑:程序博客网 时间:2024/06/10 05:24
网上看到有文章说横屏切换成竖屏的时候会打印两次相同的Log,百思不得其解啊,于是自己动手验证一下。
环境:
AndroidStudio 2.1.2
minSdkVersion 15 、targetSdkVersion 23
设备:Genymotion 4.1.1-API16
分为两个步骤:
- 不添加android:configChanges属性
- 添加android:configChanges=”orientation|screenSize”
源代码
MainActivity.class
package com.example.activitydemo;import android.app.Activity;import android.content.res.Configuration;import android.os.Bundle;import android.util.Log;public class MainActivity extends Activity { private String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "onCreate: "); } @Override protected void onStart() { super.onStart(); Log.i(TAG, "onStart: "); } @Override protected void onResume() { super.onResume(); Log.i(TAG, "onResume: "); } @Override protected void onPause() { super.onPause(); Log.i(TAG, "onPause: "); } @Override protected void onStop() { super.onStop(); Log.i(TAG, "onStop: "); } @Override protected void onDestroy() { super.onDestroy(); Log.i(TAG, "onDestroy: "); } @Override protected void onRestart() { super.onRestart(); Log.i(TAG, "onRestart: "); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Log.i(TAG, "onSaveInstanceState: "); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); Log.i(TAG, "onRestoreInstanceState: "); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.i(TAG, "onConfigurationChanged: "); }}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.activitydemo"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
1.不添加android:configChanges属性:
- 创建Activity:
- MainActivity: onCreate:
- MainActivity: onStart:
- MainActivity: onResume:
- 旋转至横屏:
- MainActivity: onPause:
- MainActivity: onSaveInstanceState:
- MainActivity: onStop:
- MainActivity: onDestroy:
- MainActivity: onCreate:
- MainActivity: onStart:
- MainActivity: onRestoreInstanceState:
- MainActivity: onResume:
- 旋转至竖屏:
- MainActivity: onPause:
- MainActivity: onSaveInstanceState:
- MainActivity: onStop:
- MainActivity: onDestroy:
- MainActivity: onCreate:
- MainActivity: onStart:
- MainActivity: onRestoreInstanceState:
- MainActivity: onResume:
- 再旋转至横屏:
- MainActivity: onPause:
- MainActivity: onSaveInstanceState:
- MainActivity: onStop:
- MainActivity: onDestroy:
- MainActivity: onCreate:
- MainActivity: onStart:
- MainActivity: onRestoreInstanceState:
- MainActivity: onResume:
小结:横竖屏切换Activity的生命周期跟预想的一样,只重启了一次。可以理解为先销毁竖屏的Activity,再创建横屏的Activity。网上说的打印两次Log的说法不知道是怎么来的。
2.添加android:configChanges属性:orientation|screenSize
<activity android:name=".MainActivity" android:configChanges="orientation|screenSize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
ps: 若编译选项中的minSdkVersion和targetSdkVersion有一项大于13时,需同时添加orientation|screenSize属性才能防止旋转屏幕时Activity重启
- 创建Activity:
- MainActivity: onCreate:
- MainActivity: onStart:
- MainActivity: onResume:
- 旋转至横屏:
- MainActivity: onConfigurationChanged:
- 旋转至竖屏:
- MainActivity: onConfigurationChanged:
小结:可以看到,添加了android:configChanges=”orientation|screenSize”属性的Activity在旋转屏幕时不会重启。
0 0
- Android系统横竖屏切换时候Activity的生命周期
- Android横竖屏切换时候的activity的生命周期
- 横竖屏切换时候activity的生命周期 android:configChanges
- 横竖屏切换时候activity的生命周期 android:configChanges
- android横竖屏切换时候Activity的生命周期
- 横竖屏切换时候activity的生命周期 android:configChanges
- 横竖屏切换时候activity的生命周期 android:configChanges
- Android--横竖屏切换时候activity的生命周期
- android横竖屏切换时候Activity的生命周期
- Android:横竖屏切换时候Activity的生命周期
- Android横竖屏切换时候Activity的生命周期
- Android--横竖屏切换时候activity的生命周期
- 整理 Android 横竖屏切换时候activity的生命周期
- Android面试:横竖屏切换时候Activity的生命周期
- android横竖屏切换时候Activity的生命周期
- android横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- C实现复制文件
- 2016年技术源码&书籍阅读总结
- 不是人人都懂的学习要点
- 二分+树dp___zxa and leaf( hdu 5682 BestCoder Round #83 )
- leetcode 147. Insertion Sort List-链表插入排序
- Android系统横竖屏切换时候Activity的生命周期
- Android studio 中SlidingMenu的使用
- hdu 5645 DZY Loves Balls 概率
- XPath与lxml_3XPath坐标轴
- maven打包时无法识别lombok中@Data生成的get set方法
- 主线程就防止在子线程操作UI
- Java千百问_08JDK详解(003)_jdk基础类库都有什么
- UWP 入门系列资源集锦
- Bootstrap 块级元素内子级块级元素高度一致问题。