2010-09-03 90 views
1

我在活动中定义了静态变量,以便在活动之间传递复杂数据。Android中的静态变量

很多人建议不要在Android中使用任何静态变量。有些人建议将全局数据存储在自定义的android.app.Application中。我不认为静态变量和自定义应用程序之间有任何区别。

我想知道你对静态变量的想法。有什么建议么?

谢谢。

回答

0

亲爱的上帝不要那样做。如果您需要在活动之间传递对象,请使用服务。

+1

你能告诉我为什么吗?它会导致任何错误结果? Android常见问题说,静态变量是活动之间传递数据的一种方式: http://developer.android.com/guide/appendix/faq/framework.html#3 – user256239 2010-09-03 22:18:44

+2

这只是一个糟糕的设计,并打败了存在面向对象。静态字段通常用于读取数据。如果你传递或设置静态数据,你应该重新考虑你的设计。 – Falmarri 2010-09-04 00:34:26

+0

很高兴能够在没有任何评论的情况下获得一年前的回答。 – Falmarri 2011-10-14 17:24:44

0

静态变量是每个定义的全局变量,因为它们的作用范围是一个类而不是实例。 根据您的设计,这些全局变量可能集中在更多/更干净/更容易,而不是散布在众多类中。此外,在传统的软件工程中,全局变量被认为是一件坏事,这是正确的,但是当在Android平台中编写资源稀缺的资源时,最佳利用资源来提升性能是最重要的。你应该以完全不同的思维方式发展。 在这种情况下,全局变量不一定非常糟糕。

请注意,Android平台还提供了一个服务界面,可以满足您在活动之间共享变量的需求。

+3

当你已经拥有一个拥有全局数据的应用程序类时,为什么要使用服务作为数据存储,并且在活动和服务中都可以轻松访问并且不需要烦人的活页夹? – schwiz 2010-09-04 01:52:37

+0

@schwiz当你的应用程序在后台运行时,会发生什么,只有你的服务正在运行。你的应用程序全局变量是否也会被垃圾收集? – 2012-10-24 17:16:23

+1

@IgorG。不,你是应用程序与活动混淆。只要你有东西在运行,应用程序就会保留在内存中,可以是Activity,Service,BroadcastReciever。 – schwiz 2012-10-26 01:32:35