还记得在网上关于生命周期面试题吗,是这样说的
2. 横竖屏切换时候 activity 的生命周期
1. 不设置 Activity 的 android:configChanges 时 , 切屏会重新调用各个生命周期 , 切横屏时会执行一次 , 切竖屏时会执行两次 .
2. 设置 Activity 的 android:configChanges="orientation" 时 , 切屏还是会重新调用各个生命周期 , 切横、竖屏时只会执行一次 .
3. 设置 Activity 的 android:configChanges="orientation|keyboardHidden" 时 , 切屏不会重新调用各个生命周期 , 只会执行onConfigurationChanged 方法 .
package com.jc.myandroidlifecycle; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity { private static final 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 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 onPause() { super.onPause(); Log.i(TAG, "onPause"); } }
最后两个onPause跟onStop也是自动黑屏的状态,我在清单文件里按照上面说的那样设置了onfigchanges的属性,发现都一样。。。是我没理解上面的话还是怎么的
#########################################下面是跟第二个页面跳转相关的生命周期###############################
package com.jc.myandroidlifecycle; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; public class SecondActivity extends AppCompatActivity { private static final String TAG = "lifecycle"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Log.i(TAG, "2onCreate"); } @Override protected void onStart() { super.onStart(); Log.i(TAG, "2onStart"); } @Override protected void onResume() { super.onResume(); Log.i(TAG, "2onResume"); } @Override protected void onStop() { super.onStop(); Log.i(TAG, "2onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.i(TAG, "2onDestroy"); } @Override protected void onRestart() { super.onRestart(); Log.i(TAG, "2onRestart"); } @Override protected void onPause() { super.onPause(); Log.i(TAG, "2onPause"); } }为了区分,第一个与第二个,我设置了同样的TAG,为LifeCycle,并给第二个页面的生命周期加了个222222....
#########################################下面把第二个页面设置成半透明那种的###############################
<activity android:name=".SecondActivity" android:theme="@android:style/Theme.Dialog" > </activity>