Android の getBaseContext、getApplicationContext を使用するか、アクティビティの "this" を使用するかの明確なルール 質問する

Android の getBaseContext、getApplicationContext を使用するか、アクティビティの

私はこの質問をグーグルで何度も検索し、いつ使うべきかについて多くの異なる推奨事項を見つけました。取得ベースコンテキストアプリケーションコンテキストを取得するまたはアクティビティ独自のこれポインタ。

よく出てくる、そして非常に理にかなっていると思われる 3 つのルールは次のとおりです。

  1. コンテキストアクティビティへの長期参照の場合アプリケーションコンテキストを取得するアプリケーションが存在する限り、これを使用する必要があります
  2. ライフサイクルがアクティビティにバインドされているコンテキストの場合、そのコンテキスト自身のアクティビティコンテキスト(これ) 使用すべきです
  3. コンテキストポインタを静的に保存する場合は、細心の注意を払ってください(可能であれば、まったく保存しないでください)。

これらが正しいと仮定すると、取得ベースコンテキスト?

私は、新しいインテントが以下の方法で作成される例をたくさん見てきました。

Intent intent = new Intent(getBaseContext(), myClass.class);

とは対照的に -

Intent intent = new Intent(this, myClass.class);

正しい、または推奨される方法はどれですか。また、その理由は何ですか。

ベストアンサー1

getBaseContext() は ContextWrapper のメソッドです。ContextWrapper は、「Context のプロキシ実装であり、その呼び出しをすべて別の Context に委任するだけです。サブクラス化することで、元の Context を変更せずに動作を変更できます。」 (javadocs による)

したがって、これは呼び出しを別のコンテキストに委任するために使用されます。

おすすめ記事