问题:
我在一个单独的类中保存了一些数据……有时它会发生,这个单例返回我从中导出的空数据,它被销毁了……
我的想法/想法:
实际上,我认为,只要应用程序存在,单例就会存在,只要应用程序记住其他任何东西,例如片段状态,我的单例也会存在它的最后数据.这不对吗?
具体问题:
我的情况如下:我从我的主片段转到子片段并在我的单身中保存一个选定的对象…我停止使用我的应用程序并在一段时间后回来.我的应用程序记住它的状态并重新创建片段,我的片段想从我的单例中获取所选对象并获得null.
我想,只要应用程序存在就应该存在一个单例,因此不需要保存…每当应用程序结束时,无论如何都不会恢复任何内容,我的应用程序将不会记住任何内容,所以无论如何都没关系.这是一个错误的假设吗?
我需要回答这个问题,因为如果我确定,上述想法是正确的,我至少知道,我必须在其他地方寻找问题……
解决方法:
这是我发现(或已经忘记)的短暂总结
>虽然应用程序已被破坏,但可以重新创建活动
>如果没有从某个地方进行参考,单身人士可以被垃圾收集
所以你必须节省你的单身人士!否则,只要您的手机处于内存不足状态,它就可能会终止应用程序并创建一个新应用程序,但请重新开始活动……
对我来说,因为我实际上总是使用带有片段的单个活动,所以很容易解决问题:
>当我创建一个活动时,我调用静态恢复功能(在调用get !!!之前)
>在活动的onSaveInstanceState中,始终将单例保存到包中
=>所以我的单身看起来像跟随(基础结构)
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); } }}
总结 以上是内存溢出为你收集整理的android – 有必要保存单身人士吗?全部内容,希望文章能够帮你解决android – 有必要保存单身人士吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)