1. ホーム
  2. android

[解決済み] always android:configChanges="keyboardHidden|orientation" ではダメなのでしょうか?

2022-04-13 13:18:39

質問

なぜ android:configChanges="keyboardHidden|orientation" は、すべての(ほとんどすべての ;)活動で使用されていますか?

グッズです。

  • アクティビティがローテーションされる心配はありません。
  • より高速に

あまりよろしくない。

  • 画面サイズに依存するレイアウトの場合、レイアウトを変更する必要がある(例:2列のレイアウトなど)

悪い点

  • 異なる方向で異なるレイアウトにする柔軟な方法はありません。
  • フラグメントを使用する場合、あまり良くない

でも、レイアウトを使い分けないのなら、いいんじゃない?

解決方法は?

クイックバックグラウンド

Androidでは、デフォルトで、特定の重要な設定変更(一般的な例としては向きの変更)が発生した場合、その変更に適応できるように、実行中のアクティビティを完全に再起動します。

を定義すると android:configChanges="keyboardHidden|orientation" キーボードが引き出されたとき、または電話が回転したときにデフォルトのリセットを実行しないでください。はい、わかっています"。

これは良いことなのでしょうか?すぐにわかることです。

心配ないですか?

あることが、まず一つの長所です。

<ブロッククオート

アクティビティがローテーションされる心配はありません。

多くの場合、向きの変更("rotation")によって発生しているエラーがある場合、それを単純に修正できると誤解しています。 android:configChanges="keyboardHidden|orientation" .

しかし、android:configChanges="keyboardHidden|orientation"は、ただの応急処置に過ぎない。実際には、設定変更のトリガーとなり得る方法はたくさんあります。例えば、ユーザーが新しい言語を選択した場合(つまり、ロケールが変更された)、アクティビティは方向性の変更によって行うのと同じ方法で再開されるでしょう。必要であれば、次のように表示することができます。 設定変更の種類別リスト .

Edit : より重要なことは、しかし、として ハクビシン コメントで指摘されているように、アプリがバックグラウンドにあるとき、Androidがアプリを終了させてメモリを解放することを決定すると、アクティビティも再開されます。ユーザーがアプリに戻ってきたとき、Androidは、他の設定変更があった場合と同じように、アクティビティを再開しようとします。このような事態に対処できなければ、ユーザーは満足しないでしょう。

つまり android:configChanges="keyboardHidden|orientation" 正しい方法は、アクティビティをコーディングして、Android が投げかけるどんな再起動にも満足できるようにすることです。これは将来的に役立つ良い習慣ですので、慣れておいてください。

では、どんな時に使えばいいのでしょうか?

おっしゃるとおり、明確な利点があります。ローテーションのデフォルトの設定変更を自分で処理することによって上書きすることで、スピードアップを図ることができます。しかし、このスピードには利便性という代償が伴います。

簡単に言うと、縦長と横長で同じレイアウトを使うなら、上書きをした方が調子がいいんです。アクティビティの本格的な再読み込みの代わりに、ビューが残りのスペースを埋めるために移動するだけです。

しかし デバイスが横向きのときに何らかの理由で別のレイアウトを使用する場合、Android がアクティビティを再読み込みするのは、正しいレイアウトを読み込むという意味で良いことです。[このようなActivityでオーバーライドを使用し、実行時に魔法のような再レイアウトを行いたい場合、幸運を祈ります - それは単純とは程遠いものです]。

簡単なまとめ

ぜひとも、もし android:configChanges="keyboardHidden|orientation" が正しいのであれば、それを使えばいいのです。しかし プリーズ 方向が変わるだけで、アクティビティが再起動するわけではありませんので、何かが変わったときに何が起こるかを必ずテストしてください。