Android中IntentService和BroadcastReceiver之间的共享全局变量

时间:2015-01-18 21:15:23

标签: android android-broadcast android-intentservice

我对此感到困惑,但我知道在Android上你可以缓存文件而不是什么,我试图做的是有一种方法我可以拥有一个共享的全局变量服务可以访问?这样我就不必将文件用于基本上只是一个变量的东西。基本上我希望IntentService更新此变量,然后BroadcastReciever可以访问。任何有关最佳实践方法的建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

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

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

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

第二个是这样的:

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
}

请注意,您必须考虑另一个问题。并发性怎么样? 如果您使用后台服务,可能是在另一个线程中执行某些工作,并且您可能希望变量是易失性的,或者提供一些同步以确保元素始终更新。如果您包装要公开的变量,则可以控制包装器的创建和对变量的访问。