【问题标题】:Access a static variable from a service从服务访问静态变量
【发布时间】:2012-04-20 12:22:17
【问题描述】:

我的应用程序有一个服务,我的MainActivity 有一个static 变量:

public static boolean appIsPlaying = false;

我的服务代码是这样的:

MainActivity.appIsPlaying = false;

此代码运行良好,但我不确定它是否是正确的方法。那么,如果这个解决方案有问题,你会帮助我吗?

谢谢

【问题讨论】:

    标签: java android variables static


    【解决方案1】:

    我真的不同意那些说让我们对所有事情都使用 getter 和 setter 的人,这就是解决方案。您的解决方案很简单,但很有效。服务和活动本身之间的这种通信方式没有问题。这不是一些公共 API,所以使用公共字段并不是绝对的禁忌。

    只有在您必须满足某些要求时才会出现问题。这个 from of 交互是最简单的,因此它不能做太多事情。例如,如果你想监听改变值的事件,那么你会遇到问题,因为你只是设置了值,并没有通知活动。

    如果是这样,那你可以bind to the service,实现更复杂的交互。可以通过将监听器存储在服务中并在发生更改时通知它们来监听值更改。

    没有真正的 方法可以做到这一点,有更合适的方法,但更少。您必须根据需要选择其中之一。

    【讨论】:

      【解决方案2】:

      将您的静态变量放入实用程序类中,并创建具有所需验证的静态 getter 和 setter。制作类 Single Instance 也是首选,但您做对的事情并非没有问题。

      【讨论】:

      • @Kermia .. 如果您的项目有一个错误,并且其他人对您的实现一无所知,并且将此变量值设置在您的服务使用的其他位置。它会破坏您的代码并降低可读性,而且不灵活和可维护......这些在编程时非常重要......
      • 不,这不是很重要(至少对我来说)。我想知道是不是系统问题。比如死锁、丢失数据或其他什么?
      • @Kermia .. 此处不会发生与系统相关的任何事情,.. 但这肯定是错误色情内容...
      猜你喜欢
      • 2015-07-22
      • 2012-06-29
      • 1970-01-01
      • 2013-01-31
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多