2017-11-23 4 views
0

私はAndroid用のメディアプレーヤーアプリを作成しました。私はonSaveInstanceStateとonRestoreInstanceStateの頭痛に長らく取り組んでおり、画面の回転でアクティビティの再起動を防ぐ簡単な方法があることを発見しました。を<activity>タグの内側に使用しています。それは私の活動が正直であることはかなりうまくいく。しかし、これはいつもうまくいくかどうかわからないし、将来開発されるアプリでは問題は発生しません。ところで、私はこれをAndroidの開発者に投稿して使用する際の警告を覚えています。AndroidManifest.xmlでのアクティビティの再起動を防ぐのはいつでも安全ですか?

覚えている:あなたが設定 変更を処理するためにあなたの活動を宣言するとき、あなたは選択肢を提供 ている任意の要素をリセットするための責任があります。 オリエンテーションの変更を処理するアクティビティを宣言し、画像を ランドスケープとポートレートの間で変更する必要がある場合は、onConfigurationChanged()中に各リソースを の各要素に再割り当てする必要があります。

+2

'configChanges' attrは悪い考えです:https://stackoverflow.com/a/5336057/8298909 –

答えて

1

同じレイアウトを横向きと縦向きに使用すると、これらのフラグを使用することは問題にはなりません。回転はビューのサイズの変更と単純に同じです。

しかし、あなたのアクティビティの破壊や再作成を引き起こすのは画面の回転だけではなく、アクティビティがバックグラウンドであれば、メモリが足りなくなると殺される可能性があることを理解する必要があります。状態を保存する目的は、それが同じように見えるので、ユーザは破壊されたとは言えません。 configChangesフラグを使用しても、アクティビティが破棄されたり再作成されたりすることは保証されません。したがって、状態を保存する責任を免れません。

onSaveInstanceState()onRestoreInstanceState()を実装することに懸念がある場合は、アプリの1回の実行中にアクティビティ内のどのデータを保存する必要があるのか​​、アプリの呼び出し間に保存するデータを考える必要がありますSharedPreferencesストアにデータを保存するようなものです)

関連する問題