42

私はこの質問を何度もグーグルで検索し、 getBaseContextgetApplicationContext、またはアクティビティ独自のthisポインターをいつ使用するかについて、さまざまな推奨事項を見つけました。

よく出てきて、とても理にかなっているように見える 3 つのルールは次のとおりです。

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

これらが正しいと仮定すると、getBaseContextの用途は何ですか?

を使用して新しいインテントが作成される非常に多くの例を見てきました-

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

とは対照的に -

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

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

4

1 に答える 1

13

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

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

于 2011-03-28T11:19:33.300 に答える