问题:
我在一个单独的类中保存了一些数据......有时它会发生,这个单例会返回我从中导出的空数据,它被销毁了......
我的想法/想法:
实际上,我认为,只要应用程序存在,单例就会存在,只要应用程序记住其他任何东西,例如片段状态,我的单例也会存在它的最后数据。这不正确吗?
具体问题:
我的情况如下:我从我的主片段转到子片段并在我的单身中保存一个选定的对象...我停止使用我的应用程序并在一段时间后回来。我的应用程序记住它的状态并重新创建片段,我的片段想从我的单例中获取所选对象并获得null。
我认为,只要应用程序存在就应该存在单例,因此不需要保存...每当应用程序结束时,无论如何都不会恢复任何内容,我的应用程序也不会记住任何内容,所以无论如何都没关系。这是一个错误的假设吗?
我需要回答这个问题,因为如果我确定,上述想法是正确的,我至少知道,我必须在其他地方寻找问题......
答案 0 :(得分:8)
这是我发现(或已经忘记)
的短暂总结所以你必须拯救你的单身人士!否则,只要您的手机处于内存不足状态,它就可能会终止应用程序并创建一个新应用程序,但会重新开始活动......
对我而言,由于我实际上总是使用片段的单个活动,因此很容易解决问题:
=>所以我的单身人士看起来像跟随(基础结构)
public class DataCache implements Parcelable
{
private static final String TAG = DataCache.class.getName();
private static DataCache mCache = null;
public static synchronized final DataCache get()
{
if (mCache == null)
mCache = new DataCache();
return mCache;
}
private DataCache()
{
// init...
}
public void save(Bundle outState)
{
outState.putParcelable(TAG, this);
}
public static void restore(Bundle savedInstanceState)
{
if (savedInstanceState != null && savedInstanceState.containsKey(TAG))
{
// only restore, if necessary, i.e. if application was destroyed but activity saved our last cache
if (mCache == null)
mCache = savedInstanceState.getParcelable(TAG);
}
}
}