很久前看过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全部去掉效果也是同上,生命周期重新执行一次




更多相关文章

  1. Android使用ViewPager实现左右滑动效果
  2. Android 开发笔记 动画效果 --Animation
  3. Android——SpannableString实现带圆角标签效果
  4. Android 倒车影像车道线,3D效果
  5. Android 横竖屏切换的Activity生命周期演示-面试常问题
  6. Android的生命周期 Start onResume

随机推荐

  1. androidの更改个人资料性别弹出框案例
  2. Android打开系统调试总开关
  3. Android(安卓)Studio 将Library上传到JCe
  4. android 应用程序调试-03
  5. Android学习笔记之RecyclerView
  6. Android图表分析的开发
  7. alarm从上层到底层完整调用流程
  8. Android实时监听网络状态
  9. android 手机号码运营商判断
  10. Android类动态加载技术