Androidアプリメモ/メモ14
Contextが欲しくなった
データベースを開くときにSQLiteOpenHelperがContextを求めてくるように、何かにつけてContext情報を用意する必要があります。Activityの文脈であればActivity自信を渡し、場合によってはgetApplicationContextを呼び出して済ませてきましたが、文脈を持たない自作クラスの中ではいちいち面倒なことになるなと思ってました。みんなどうやってるんだろうと調べてみると、Applicationを継承してオレオレApplicationを用意しているみたいでした。
とりあえずMyApplicationクラスを用意して、AndroidManifest.xmlに利用する旨、書き込みます。
<application android:name=".MyApplication" />
MyApplicationの実装がこんな感じらしい。
public class MyApplication extends Application {
private static MyApplication instance = null;
@Override
public void onCreate() {
super.onCreate();
instance = this;
}
public static MyApplication getInstance() {
return instance;
}
}
MyApplication.getInstance().getApplicationContext()と呼び出せばApplicationのContextがいつでも取得できるということらしい。MyApplicationにはアプリ全般で使うようなデータも持たせたりもできていいよ、って書いてありました。便利そうだけど、Activityみたいにすぐメモリから追い出されたりしないのかは未検証です。