2

一部の場所では、「DatabaseUtil db=new DatabaseUtil(DailyPlanView.this);」のように指定していました。ここで、DatabaseUtil はコンストラクタ引数を持つクラスであり、context です。しかし、DailyPlanView クラスの DatabaseUtil クラスのオブジェクトを作成する場合は、上記のコードを使用しています。私の疑問は、コンテキストの使用と、コンテキストオブジェクトを引数として渡す代わりに、なぜ「これ」を渡すのかということです。

4

1 に答える 1

2

コンテキストを扱うときはいつでも、それがすべてで使用されていることを理解することが重要です。データベースの使用からシステム サービスの取得まで。これは、Android がコンテキストで動作するために必要です。具体的には、渡すthisときは、基本的にこのステートメントをカプセル化するクラスを渡します。

class MyActivity extends Activity
{

     onCreate(Bundle bundle)
     {
        View v = new View(this);
     }
}

渡すthisとは、それをカプセル化するオブジェクトを指します。これはオブジェクト指向の概念です...どこthisが を参照していますかMyActivity。コンテキストを渡すときに留意すべきことの 1 つは、正しい種類を渡すようにすることです。一部の Context オブジェクトは他のオブジェクトよりも寿命が長く、適切に管理されていないと Context のリークにつながる可能性があります。特にこの例では、Activity が Context を拡張するため、これが機能します。

違いは View クラスで発生します。

getApplicationContext()

getBaseContext()

this、アクティビティのコンテキストでは、アクティビティの寿命があります (上記の例)

コンテキストについて追加することの 1 つは、基本的に現在のアプリケーションへの参照であり、特定のデータであるということです。

コンテキストに関する詳細については、次のスレッドを参照してください: What is 'Context' on Android?

于 2012-10-02T05:38:30.027 に答える