0

私はこれに少し混乱していますが、Android ではファイルをキャッシュできることを知っています。私がやろうとしているのは、すべてのサービスがアクセスできる共有グローバル変数を持つ方法があるということですか? このようにすれば、基本的に 1 つの変数だけになるものにファイルを使用する必要がなくなります。IntentService基本的に、この変数を更新してから、にアクセスできるようにしたいと思いますBroadcastReceiver

4

1 に答える 1

1

これは Java の質問であり、Android のコンテキストに適用されると言えます。それとは別に、変数を保持して外部から参照するクラスを作成できます。

問題は、そのオブジェクトへの参照を取得することです。そのためには、次の 2 つの方法があります。

  • AndroidManifest.xml で実装および宣言する必要があるApplicationオブジェクトに追加します。次に、ゲッターを公開し、アプリケーション コンテキストを使用してオブジェクトにアクセスする必要があります。
  • 常に同じインスタンスを返す静的メソッド (シングルトン パターン) によってアクセス可能なオブジェクトの単一インスタンスを提供します。

2番目のものは次のようになります。

public class Wrapper {

   private Object mVariable;

   private static sInstance;

   private Wrapper(){
   }

   public static Wrapper getInstance(){
      if(sInstance == null){
         sInstance = new Wrapper();
      }
      return sInstance;
   }

   // setters and getters for variables
}

別の問題を考慮する必要があることに注意してください。並行性はどうですか?バックグラウンド サービスを使用している場合、別のスレッドで何らかの作業を実行している可能性があり、変数を揮発性にするか、要素が常に更新されるように同期を提供する必要がある場合があります。公開する変数をラップすると、ラッパーの作成と変数へのアクセスを制御できます。

于 2015-01-18T21:30:44.607 に答える