屏幕旋转Activity的生命周期变化

本文详细介绍了当Android应用中的Activity遇到屏幕旋转时的行为变化。通过配置`configChanges`属性可以避免因屏幕旋转导致的Activity重启,默认情况下屏幕旋转会触发Activity的销毁与重建过程。文章还提供了具体的生命周期回调函数调用顺序示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

屏幕旋转 Activity 的生命周期变化:

1、Activity 不重启请在 AndroidManifest.xml 设置如下:

......

   <activity android:name=".app.CustomDialogActivity"
                android:label="@string/activity_custom_dialog"

                android:configChanges="orientation|keyboardHidden"
>

......

2、如果不设置则启动如下:

第一次执行
onCreate(null)
onStart()
onPostCreate()
onResume()
onPostResume()

可将屏幕旋转以后:

onSaveInstanceState()
onPause()
onStop()
onDestroy()
onCreate(Bundle[{android:viewHierarchyState=Bundle[{android:views=android.util.SparseArray@43370a48}], key=123}])
onStart()
onRestoreInstanceState()
onPostCreate()
onResume()
onPostResume()

onDestroy() 证明杀掉了你的 activity, onCreate() 又重新启动了你的 activity

 

代码:

......

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.custom_dialog_activity);

  Log.w("Test", "onCreate(" + savedInstanceState + ")");
 }

 protected void onRestart() {
  super.onRestart();
  Log.w("Test", "onRestart()");
 }

 protected void onStart() {
  super.onStart();
  Log.w("Test", "onStart()");
 }

 protected void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  Log.w("Test", "onRestoreInstanceState()");
 }

 protected void onPostCreate(Bundle savedInstanceState) {
  super.onPostCreate(savedInstanceState);
  Log.w("Test", "onPostCreate()");
 }

 protected void onResume() {
  super.onResume();
  Log.w("Test", "onResume()");
 }

 protected void onPostResume() {
  super.onPostResume();
  Log.w("Test", "onPostResume()");
 }

 protected void onSaveInstanceState(Bundle outState) {
  outState.putInt("key", 123);
  super.onSaveInstanceState(outState);
  Log.w("Test", "onSaveInstanceState()");
 }

 protected void onPause() {
  super.onPause();
  Log.w("Test", "onPause()");
 }

 protected void onStop() {
  super.onStop();
  Log.w("Test", "onStop()");
 }

 protected void onDestroy() {
  super.onDestroy();
  Log.w("Test", "onDestroy()");
 }

 protected void onNewIntent(Intent intent) {
  super.onNewIntent(intent);
  Log.w("Test", "onNewIntent()");
 }

.....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值