再看Android 屏幕切换引起的生命周期变化
16lz
2021-01-23
很久前看过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 开发笔记 动画效果 --Animation
- Android——SpannableString实现带圆角标签效果
- Android 倒车影像车道线,3D效果
- Android 横竖屏切换的Activity生命周期演示-面试常问题
- Android的生命周期 Start onResume