我刚刚发现当设备启用锁屏时,会发生以下情况。对于此活动,在清单中设置了 android:screenOrientation="landscape"。然后我用我的手机以纵向模式执行以下操作。
- 用户打开一个活动。
- onCreated() 被调用
- onStart() 被调用
- onResume() 被调用
- 用户锁定设备 4.5 onPause 被调用()
- onDestroy() 被调用
- onCreate() 被调用
- onStart() 被调用
- onResume() 被调用 8.5 onPause 被调用()
- 用户解锁设备
- onResume() 被调用
- onDestroy() 被调用
- onCreate() 被调用
- onStart() 被调用
- onResume() 被调用。
好吧,我不明白为什么屏幕熄灭后执行 6,7,8.. 我也不明白为什么执行 11,12,13,14。当我锁定和解锁设备时会发生一些奇怪的事情吗?我突然对活动生命周期感到困惑。有人可以澄清一下吗?
附上代码和日志消息
package com.example.wf;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("log", "oncreate");
}
@Override
protected void onResume() {
super.onResume();
Log.d("log", "onresume");
};
@Override
protected void onStart() {
super.onStart();
Log.d("log", "onstart");
};
@Override
protected void onPause() {
super.onStart();
Log.d("log", "onpause");
};
@Override
protected void onDestroy() {
Log.d("log", "ondestroy");
super.onDestroy();
};
}
记录消息
10-05 23:11:07.994: D/log(23810): oncreate
10-05 23:11:07.994: D/log(23810): onstart
10-05 23:11:07.994: D/log(23810): onresume
// LOCK DEVICE
10-05 23:11:19.957: D/log(23810): ondestroy
10-05 23:11:20.007: D/log(23810): oncreate
10-05 23:11:20.007: D/log(23810): onstart
10-05 23:11:20.007: D/log(23810): onresume
// UNLOCK DEVICE
10-05 23:11:57.407: D/log(23810): onresume
10-05 23:11:57.537: D/log(23810): ondestroy
10-05 23:11:57.587: D/log(23810): oncreate
10-05 23:11:57.587: D/log(23810): onstart
10-05 23:11:57.587: D/log(23810): onresume