0

我对此感到有些困惑,但我知道在 Android 上你可以缓存文件,什么不行,我想做的是有一种方法可以让我的所有服务都可以访问一个共享的全局变量?这样我就不必为基本上只是一个变量的东西使用文件。基本上我想要IntentService更新这个变量,然后可以访问BroadcastReceiver.

4

1 回答 1

1

我会说这更像是一个 Java 问题,然后应用于 Android 上下文。除此之外,您可以创建一个包含变量的类并从外部引用它。

您现在的问题是获取对该对象的引用,为此有两种方法:

  • 将其添加到您必须在 AndroidManifest.xml 中实现和声明的Application对象中。然后,您必须公开 getter 并使用应用程序上下文来访问该对象。
  • 提供可通过静态方法访问的对象的单个实例,该方法始终返回相同的实例(单例模式)。

第二个是这样的:

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 回答