私は両方のアプローチを使用しました:
- ローテーションでアクティビティを破棄します
- ローテーションでアクティビティを破棄しないでください
私のアプローチはほとんどの場合、回転イベントをキャッチし、必要に応じてsetContentViewを呼び出して、いくつかのコンポーネントを再度追加することです。そうでない場合は、回転させるだけで、レイアウトが適応するように設計されます。
これまでのところ、非常に動的で非常に複雑な構造の画面で破棄できるという利点しかありません。回転して破棄しない場合は、画面を再構築するときにちらつきが表示されます。
onSaveInstance、onRestoreInstaceを使用して状態を渡す必要があるオーバーヘッドは、エラーが発生しやすく、何らかの理由で時間がかかる場合があります。
私は何かが足りないのですか?
アップデート:
コードで「Orientation.XPTO==...」の場合は何もしていません。これは、2つのアプローチのそれぞれのロジックです(コードは再利用されます)。
破壊するとき
onCreate -> DrawUI() setContentView and add views -> fill() add content
破壊されていない場合:
onCreate -> DrawUI() setContentView and add views -> fill() add content
onRotation -> DrawUI() setContentView and add views -> fill() add content
回転後にsetContentViewを呼び出すと、デバイスの向きに適したレイアウトが選択されます(GoogleのReto Meier https://stackoverflow.com/a/456918/327011によるこの回答を確認してください)
また、DrawUIと塗りつぶしには、最初に2つの方向のそれぞれでアクティビティを作成できるため、縦向きと横向きの両方のレイアウトのロジックが必要になります。