【发布时间】:2012-10-04 12:24:17
【问题描述】:
我有一个 Android 应用程序,在其中我使用一个类来存储活动之间的静态数据,例如:
class Global
{
private static boolean mInitialized = false;
private static String mData = null;
public static void init()
{
mData = "something";
mInitialized = true;
}
public static boolean isInitialized()
{
return mInitialized;
}
public static String getData()
{
return mData;
}
}
所以在主要活动 onCreate 我做:
if( Global.isInitialized() == false )
Global.init();
然后启动其他活动,动作流程为:
MainActivity -> ActionActivity -> PluginActivity
Main 是我初始化 Global 类的地方,Action & Plugin 是我使用该类的 getData() 方法的地方。
现在在某些情况下,我得到了非常奇怪的行为......如果在 PluginActivity 中发生了意想不到的事情(例如 NullPointerException),活动崩溃并且应用程序返回到启动它的 ActionActivity,但是,此时,在ActionActivity 的 onCreate (应该初始化 Global 类)我得到一个异常,因为 getData() 返回 null (并且 isInitialized() 是 false ),因为 Global 类从未被 MainActivity 初始化。
那么,如果发生意外异常之类的事情,是否可以释放/清除像我的 Global 类这样的静态成员的对象?
【问题讨论】:
-
你为什么不尝试把这个类设为单例......
标签: android android-activity static singleton storage