Android-アプリケーショングローバル取得Context
アプリケーションアーキテクチャが複雑な場合、多くのロジックはActivityクラスから離れ、純粋なJavaクラスになります.この場合、Contextを使用する必要がある場合は、どうすればいいですか?
この場合のグローバルContextの取得方法について説明します.
アプリケーションクラスのカスタマイズ
Androidには、アプリケーションが起動すると自動的に初期化されるアプリケーションクラスが用意されています.
独自のアプリケーションクラスをカスタマイズして、元のアプリケーションクラスから継承し、グローバルContextなどのプログラムのグローバルステータスを管理できます.
そしてAndroidManifestを修正します.xmlファイルは、デフォルトのアプリケーションクラスではなく、システムプログラムの起動時にMyApplicationクラスを初期化する必要があることを通知します.
注意ここでMyApplicationを指定するときは必ず完全なパッケージ名を付けてください
"cn.com.ista.pdachina.app.AppContext"
ああ、そうしないと、このクラスは見つかりません.
Contextをグローバルに取得するメカニズムを実現しました.その後、プロジェクトのどこでContextを使用するにしても、AppContextを呼び出すだけです.getContext()でいいです.
この場合のグローバルContextの取得方法について説明します.
アプリケーションクラスのカスタマイズ
Androidには、アプリケーションが起動すると自動的に初期化されるアプリケーションクラスが用意されています.
独自のアプリケーションクラスをカスタマイズして、元のアプリケーションクラスから継承し、グローバルContextなどのプログラムのグローバルステータスを管理できます.
import android.app.Application;
import android.content.Context;
public class AppContext extends Application {
private static Context context;
@Override
public void onCreate()
{
context = getApplicationContext();
}
public static Context getContext()
{
return context;
}
}
そしてAndroidManifestを修正します.xmlファイルは、デフォルトのアプリケーションクラスではなく、システムプログラムの起動時にMyApplicationクラスを初期化する必要があることを通知します.
注意ここでMyApplicationを指定するときは必ず完全なパッケージ名を付けてください
"cn.com.ista.pdachina.app.AppContext"
ああ、そうしないと、このクラスは見つかりません.
Contextをグローバルに取得するメカニズムを実現しました.その後、プロジェクトのどこでContextを使用するにしても、AppContextを呼び出すだけです.getContext()でいいです.