6

リスト ビューを使用していて、カスタム ベース アダプタ クラスがある場合、ベース アダプタが および によってインスタンス化されるgetApplicationContextと、リスト ビューで異なるテキストの色が表示されclassname.thisます。getApplicationContextテキストの色は白ですが、黒classname.thisです。誰かが私のためにそれを説明できますか?

4

2 に答える 2

6

基本的にどちらも Context のインスタンスですが、アプリケーション インスタンスはアプリケーションのライフサイクルに関連付けられているのに対し、Activity インスタンスは Activity のライフサイクルに関連付けられている点が異なります。したがって、アプリケーション環境に関するさまざまな情報にアクセスできます...

getApplicationContextを参照してください

編集

答えを見つける際に、選択したコンテキストに応じて Android Holo Light のスタイルが変化するのに役立ちます

于 2013-04-22T07:26:49.380 に答える
6

ActivityName.this はアクティビティ コンテキストを参照します。getApplicationContext () は、アプリケーション コンテキストを参照します。

ほとんどの場合、アクティビティ コンテキストを使用する方が適切です。

コモンズウェアが提供する回答を確認してください。トピックに関する詳細な説明があります。

アクティビティ コンテキストまたはアプリケーション コンテキストをいつ呼び出すか?

上記リンクより引用

どこに行ってもgetApplicationContext() を使用しない理由は次のとおりです。

  1. Activity が行うすべてのことをサポートする、完全な Context ではありません。このコンテキストで実行しようとするさまざまなことは失敗しますが、主に GUI に関連しています。

  2. getApplicationContext() からのコンテキストが、クリーンアップしない呼び出しによって作成されたものを保持している場合、メモリリークが発生する可能性があります。アクティビティでは、何かを保持している場合、アクティビティがガベージ コレクションを取得すると、他のすべてもフラッシュされます。Application オブジェクトは、プロセスの存続期間中残ります。

于 2013-04-22T07:15:51.153 に答える