AndroidはグローバルでContextを取得するテクニックを応用

1830 ワード

—————————転載歓迎!———————


AndroidアプリではContextが使われることが多い。

  • Toast
  • をイジェクト
  • Activity
  • を起動
  • ブロードキャストsendBroadcast(intent)
  • を送信
  • 操作データベース
  • 使用通知等
  • ほとんどの操作はActivityで行われますが、Activity自体はContextオブジェクトです.しかし、アプリケーションアーキテクチャが複雑な場合、多くの論理はActivityクラスから離れ、純粋なJavaクラスになります.この場合、Contextを使用する必要がある場合は、どうすればいいですか?
    この場合のグローバルContextの取得方法について説明します.

    アプリケーションクラスのカスタマイズ


    Androidには、アプリケーションが起動すると自動的に初期化されるアプリケーションクラスが用意されています.
    独自のアプリケーションクラスをカスタマイズして、元のアプリケーションクラスから継承し、グローバルContextなどのプログラムのグローバルステータスを管理できます.
        public class MyApplication extends Application {
    
            private static Context mContext;
    
            @Override
            public void onCreate(){
                mContext = getApplicationContext();
            }
    
            public static Context getContext() {
                return mContext;
            }
        }
    

    そしてAndroidManifestを修正します.xmlファイルは、デフォルトのアプリケーションクラスではなく、システムプログラムの起動時にMyApplicationクラスを初期化する必要があることを通知します.
    
    
    
        
    
    
    
        
            ......
        
    
    

    注意:MyApplicationのnameを指定するときは必ず完全なパッケージ名:com.exmaple.hello.MyApplication、そうでないとクラスが見つかりません.

    これにより、プログラムのどこでもMyApplicationを呼び出すことができるように、Contextをグローバルに取得するメカニズムを実現しました。getContext()メソッドは、グローバルContextを取得します。