一部の場所では、「DatabaseUtil db=new DatabaseUtil(DailyPlanView.this);」のように指定していました。ここで、DatabaseUtil はコンストラクタ引数を持つクラスであり、context です。しかし、DailyPlanView クラスの DatabaseUtil クラスのオブジェクトを作成する場合は、上記のコードを使用しています。私の疑問は、コンテキストの使用と、コンテキストオブジェクトを引数として渡す代わりに、なぜ「これ」を渡すのかということです。
1 に答える
コンテキストを扱うときはいつでも、それがすべてで使用されていることを理解することが重要です。データベースの使用からシステム サービスの取得まで。これは、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?