Android Activity横竖屏转换的生命周期
新创建一个Activity,用来此次测试。
先贴代码
1 package com.hugo.apj.activitylifetest; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.util.Log; 6 7 public class MainActivity extends AppCompatActivity { 8 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_main); 13 Log.i("TAG","OnCreate"); 14 } 15 16 @Override 17 protected void onStart() { 18 Log.i("TAG","OnStart"); 19 super.onStart(); 20 } 21 22 @Override 23 protected void onPause() { 24 Log.i("TAG","OnPause"); 25 super.onPause(); 26 } 27 28 @Override 29 protected void onStop() { 30 Log.i("TAG","OnStop"); 31 super.onStop(); 32 } 33 34 @Override 35 protected void onRestart() { 36 Log.i("TAG","OnRestart"); 37 super.onRestart(); 38 } 39 40 @Override 41 protected void onResume() { 42 Log.i("TAG","OnResume"); 43 super.onResume(); 44 } 45 46 @Override 47 protected void onDestroy() { 48 Log.i("TAG","OnDestroy"); 49 super.onDestroy(); 50 } 51 }
以下为测试结果:
第一次运行出现:
08-05 15:56:48.282 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnCreate
08-05 15:56:48.283 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnStart
08-05 15:56:48.283 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnResume
先清除Logcat,从竖屏转换到横屏:
08-05 16:01:01.363 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnPause
08-05 16:01:01.364 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnStop
08-05 16:01:01.364 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnDestroy
08-05 16:01:01.429 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnCreate
08-05 16:01:01.429 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnStart
08-05 16:01:01.430 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnResume
同样清除Logcat,再从横屏转换到竖屏:
08-05 16:01:37.330 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnPause
08-05 16:01:37.333 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnStop
08-05 16:01:37.333 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnDestroy
08-05 16:01:37.399 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnCreate
08-05 16:01:37.399 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnStart
08-05 16:01:37.400 20772-20772/com.hugo.apj.activitylifetest I/TAG: OnResume
从以上结果可以发现,在不讨论添加其他限制代码的情况下,横竖屏转换都会重新走完除了OnRestart外的其他六个生命周期。