【发布时间】:2010-12-10 19:49:18
【问题描述】:
我经常遇到一个问题,即我必须在活动的多次调用之间保留状态(即,经历几个 onCreate()/onDelete() 循环)。不幸的是,Android 对此的支持真的很差。
作为一种保存状态的简单方法,我认为由于类加载器仅加载一次类,因此将在静态 Bundle 字段中的多个活动实例之间共享的临时数据存储是安全的。
但是,偶尔,当实例 A 创建静态包并在其中存储数据,然后被销毁,而实例 B 尝试从中读取时,静态字段突然为 NULL。
这是否意味着在活动经历创建/销毁周期时,类已被类加载器删除并重新加载? static字段怎么会在之前引用一个对象的时候突然变成NULL呢?
【问题讨论】:
-
不确定您的问题的答案,但我知道 Android 开发人员建议您不要不必要地保留静态引用,因为它们容易出现内存泄漏:android-developers.blogspot.com/2009/01/…
-
好吧,那篇文章是关于泄露上下文的。只有通过该静态引用可以强烈访问上下文时,这才是一个问题,例如,情况就是这样。视图,但不适用于捆绑包(据我所知?)。但通常我会假设,一旦加载了类,静态引用就会与应用程序一样长,这在 Android 中似乎并非如此。
标签: java android static classloader