从服务访问静态变量

时间:2012-04-20 12:22:17

标签: java android variables static

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

public static boolean appIsPlaying = false;

我的服务代码是这样的:

MainActivity.appIsPlaying = false;

这段代码运作良好,但我不确定这是一种真实的方法。那么,如果这个解决方案有问题,你能帮帮我吗?

由于

2 个答案:

答案 0 :(得分:8)

我真的不同意那些说让我们只使用吸气剂和制定者的人,这就是解决方案。您的解决方案很简单,但有效。服务和活动本身之间的这种通信方式没有问题。这不是一些公共API,因此使用公共字段并不是一个明确的禁忌。

只有在您必须满足某些要求时才会出现问题。这种互动是最简单的,因此它做不了多少。例如,如果您想要收听更改值的事件,那么您将遇到问题,因为您只需设置值并且不通知活动。

如果是这种情况,那么您可以bind to the service,并实施更复杂的互动。可以通过将侦听器存储在服务中并在发生更改时通知它们来完成对值的更改。

实际上没有 的方法,有更合适的方法,而不是那么方便。你必须根据自己的需要选择其中一个。

答案 1 :(得分:2)

将静态变量放在实用程序类中,并使用所需的验证创建静态getter和setter。使单一实例类也是首选,但你正在做的事情并非没有问题。