contextってなんじゃい
getApplicationContext() とか getContext() とか Activity.this とか、なんなんだ一体!とちょっと調べてみた。
- MainActivityとSubActivityと2つActivityを作成
- それぞれでボタンを配置して、ボタンのコールバック関数をこんな風に実装
// MainActivity public void onButton1(View v) { Log.i("main", v.getContext().toString()); Log.i("main", this.toString()); Log.i("main", getApplicationContext().toString()); } // SubActivity public void onButton1(View v) { Log.i("sub", v.getContext().toString()); Log.i("sub", this.toString()); Log.i("sub", getApplicationContext().toString()); }
- 実行して、LogCatで結果を見ると以下のように出力される
07-25 13:50:13.372: I/main(13478): com.example.samplecontext.MainActivity@46e80600 07-25 13:50:13.372: I/main(13478): com.example.samplecontext.MainActivity@46e80600 07-25 13:50:13.372: I/main(13478): android.app.Application@46e7ccb8 07-25 13:50:34.002: I/sub(13478): com.example.samplecontext.SubActivity@46eb3b80 07-25 13:50:34.002: I/sub(13478): com.example.samplecontext.SubActivity@46eb3b80 07-25 13:50:34.002: I/sub(13478): android.app.Application@46e7ccb8
結論
- getApplicationContext()は1つのアプリケーションで唯一
- ActivityのcontextとgetApplicationContext()は別物
- ViewのgetContextはActivityのcontext