デフォルトでは、アプリの実行中にユーザーがデバイスの表示言語を変更すると、Androidはアクティビティを破棄してから再作成します。これは、アプリが最新の設定を正しく使用していることを確認するために行われます。
マニフェストlocale
の属性に追加することで、この動作をオーバーライドできます。configChanges
その後、ユーザーが言語を変更するとonConfigChanged()
、完全に再起動するのではなく、へのコールバックのみを受け取ります。ただし、ドキュメントには、「すべてのリソースを再度取得する」必要があると記載されています。
これらの構成変更はすべて、アプリケーションに表示されるリソース値に影響を与える可能性があります。したがって、onConfigurationChanged()が呼び出された場合、変更を正しく処理するには、通常、すべてのリソース(ビューのレイアウト、ドローアブルなどを含む)を再度取得する必要があります。
私の質問は、これはロケールの変更に本当に当てはまりますか?ユーザーの言語設定をまったく使用せず、GLSurfaceViewを使用してグラフィックのみをレンダリングする架空のアプリがある場合、このイベントを無視しても安全ですか?もしそうなら、あなたはそれをドキュメントでバックアップできますか?
イベントを無視することは正しく機能しているようで、ロケールを使用していないときにビューを再作成することはあまり意味がありませんが、微妙なバグを導入していないことを確認したいと思います。
どんな情報でも大歓迎です。