デバイスでロック画面が有効になっていると、次のことが発生することがわかりました。このアクティビティでは、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
携帯電話(または向きがロックされた縦向きのタブレット)では、ロック画面は縦向きのみです。したがって、デバイスがロックされると、デバイスは自動的にポートレートモードに切り替わります(6、7、8、9の原因になります)。デバイスがロック解除されると、Activity
が表示されるようになるとonResume()
が呼び出されますが、再び縦向きから横向きにロックされるため、アクティビティは破棄され、横向きに再作成されます。
アクティビティの再作成シナリオを実現するには、Android:configChanges = "orientation"属性を使用して、Androidマニフェストファイルによってアクティビティレベルで構成の変更を処理できます。