再看Android(安卓)屏幕切换引起的生命周期变化
16lz
2022-04-12
很久前看过android屏幕切换引起的Activity生命周期重新加载的机制,不过感觉现在的Android系统已经不再是那样的了。
所以今天,让我们再看Android屏幕切换引起的生命周期变化
首先来看MainActivity:
import android.content.res.Configuration;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.util.Log;public class MainActivity extends ActionBarActivity { private final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(TAG, "onCreate"); } @Override protected void onStart() { super.onStart(); Log.d(TAG, "onStart"); } @Override protected void onResume() { super.onResume(); Log.d(TAG, "onResume"); } @Override protected void onPause() { super.onPause(); Log.d(TAG, "onPause"); } @Override protected void onStop() { super.onStop(); Log.d(TAG, "onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.d(TAG, "onDestroy"); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Log.d(TAG, "onSaveInstanceState"); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); Log.d(TAG, "onRestoreInstanceState"); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.d(TAG, "onConfigurationChanged"); }}AndroidManifest.xml中:android:configChanges="orientation|keyboardHidden|screenSize"
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tel.test" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>不管切横屏还是竖屏的时候都只是调用:onConfigurationChanged一次
当去掉screenSize后,切换横竖屏(不管是横屏切竖屏还是竖屏切换横屏)效果还是一样:生命周期重新执行了一次,同时调用了onSaveInstanceState和onRestoreInstanceState
在此处去掉keyboardHidden效果一样,同上,生命周期重新执行一次
在AndroidManifest.xml中把android:configChanges全部去掉效果也是同上,生命周期重新执行一次
更多相关文章
- Android:使用ViewPager实现左右滑动切换图片 (简单版)
- Android(安卓)4.0 横竖屏切换注意事项
- 在Android中自动实现横竖屏切换的问题
- Android(安卓)横竖屏切换的Activity生命周期演示-面试常问题
- Android横屏竖屏切换的问题
- Android(安卓)Activity界面切换添加动画特效
- 对android的Activity切换时输入法不弹出来的解决办法
- 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Fedora镜像
- 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像