関連する質問:
これは、アクティビティで発生した奇妙な動作です。
ポートレートモード(ノーマルです)
- 画面ロックを押します
Activity: onPause()
。 - 画面のロックを解除します
Activity: onResume()
。
ランドスケープモード(おかしい)
- 画面ロックを押すと、ポートレートレイアウト
Activity: onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onResume()
が読み込まれます。 - 画面のロックを解除し、 Landscapeレイアウト
Activity: onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onResume()
を読み込みます。
私が期待するものは次のとおりです。
ポートレートモード:(同上)
横向きモード: (縦向きモードのように動作する必要があります)
- 画面ロックを押します
Activity: onPause()
。 - 画面のロックを解除します
Activity: onResume()
。
だから私の質問:
- アクティビティがこのように動作するのはなぜですか?
- アクティビティはどのように動作しますか?
私の質問の原文の説明:
電話のロック画面ボタンを押しているときに、アクティビティがランドスケープ モードのときに、(Eclipse に出力したデバッグ メッセージで) アクティビティがポートレート モードに再作成されていることに気付きました (画面がすべて黒くなっている間、もちろん)。次に、ロック画面ボタンをもう一度押して画面のロックを解除すると、アクティビティが破棄され、ポートレートに再作成されました。
私が覚えているように (100% 確実ではありませんが)、私が期待しているのは、ポートレート モードの場合と同様に、横向きモードで画面をロックしている間、私のアクティビティはonSaveInstanceState()
とのみを受ける必要があることです。onPause()
アクティビティをポートレートに再作成してランドスケープに戻すのではなく。
私の電話で何かを台無しにしたのですか?どうすれば正常に戻すことができますか?
ありがとう!
この問題に貢献してくれた皆さんに感謝します。特に、@HoanNguyen が彼のデバイスで私のためにテストしてくれたことに感謝します。そして、この問題に関して私と詳細な議論をしてくれた@Raghunandanに特に感謝します。
これまでの皆さんの貢献を要約すると、次の結論が得られます。
1. これは正常な現象です。
携帯電話では、ランドスケープ モードで実行中のアクティビティが、画面ロック時にポートレート モードに切り替えられるのは正常な動作のようです。少なくとも、これまでにテストされた電話には当てはまります。したがって、ライフサイクル関数が常にこの変更をエレガントに処理できるようにする必要があります。
2. ロックされた画面の「デフォルトの向き」が原因だと思います。
この問題について説明しているドキュメントや多くのリソースはありません。しかし、ほとんどのデバイスではロックされた画面が縦向きであるため、実行中のアクティビティが画面ロック時にデバイスの「デフォルトの向き」に戻るという仮定は非常に論理的です。
さらなる研究:
画面が横向きにロックされている場合、アクティビティはどのように動作するのでしょうか?