我刚刚发现当设备启用锁定屏幕时,会发生以下情况。 对于此活动,在清单中设置android:screenOrientation =“landscape”。 然后我用手机以纵向模式执行以下操作。
好吧,我不明白为什么在屏幕关闭后会执行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
答案 0 :(得分:42)
在手机(或方向锁定肖像的平板电脑)上,锁定屏幕仅为纵向。因此,当设备锁定时,设备会自动切换到纵向模式(导致6,7,8和9)。当设备解锁后,当onResume()
变得可见时,会调用Activity
,但您再次在纵向之间进行转换,现在已锁定在横向中,因此活动将被破坏并在横向中重新创建。
答案 1 :(得分:2)
为了解决活动重新创建方案,您可以使用android:configChanges =“orientation”属性通过android清单文件处理活动级别的配置更改。