【发布时间】:2013-02-07 11:23:10
【问题描述】:
为了在我的应用程序中存储运行时数据,我有一个包含两个静态变量的类:
public class App {
public static ClementineConnection mClementineConnection = null;
public static Clementine mClementine = null;
}
它们在第一个 Activity 的 onCreate 方法中初始化。此 Activity 仅根据状态(应用程序是否连接到服务器)启动其他 Activity。
如果应用程序处于空闲状态或在后台运行并发出通知,则有时在访问其中一个静态变量时,其他 onCreate 方法中会发生 NullPointerException。他们以某种方式收集垃圾。 该应用程序有一个在后台运行的带有线程的服务,所以我认为必须一直有一个引用。
您知道如何防止这些静态变量被垃圾收集吗?当应用程序连接到服务器时,信息必须可用。创建新实例(例如Clementine.getInstance())不是一种选择。
如果你想看代码:https://code.google.com/p/clementine-remote-android/source/browse/
【问题讨论】:
-
尝试做静态最终
-
@chintankhetiya 他不能做到
final,因为他正在分配其他活动
标签: java android static nullpointerexception