我一直想知道这个question on stack overflow解决方案在Android上传递复杂数据的一个解决方案是使用静态数据成员。
但不知怎的,我觉得这不是你应该怎么做的方式,即使你看起来这是最简单的方法。
因此,我的问题是使用静态成员传递复杂数据的缺点是什么。
答案 0 :(得分:1)
应避免使用静态成员。这是在Android中传递数据的最糟糕方式之一。静态对象持续超出应用程序的生命周期。因此,用户可以退出您的应用程序,并且您的数据仍然存在,因为该类仍然在JVM中加载。那非常糟糕。
有时,Otto可以是传递复杂数据的好选择,它可以很好地与Activity Lifecycle一起使用。我在许多项目中看到的另一种选择是老式的听众或回调。还有intent services和local broadcast managers。
有很多方法可以共享复杂的数据。我认为“静态”物体不是起动器。像瘟疫一样避免它们。
答案 1 :(得分:1)
如果满足所有这些条件,则可以使用在组件之间传递数据的静态引用:
由于这些条件非常严格,因此采用不同的方法(gmale建议的方法)通常会更好。
我认为最大的缺点是静态数据的管理 - 通常很难判断何时不再需要数据以及何时可以释放数据。