【发布时间】:2014-12-26 05:45:42
【问题描述】:
我创建了一个使用单例来保存其状态的 Android 应用程序。该类在应用程序启动时被实例化。
该应用程序确实大量使用了 Fragment,但不是单个 Activity 应用程序。
当活动因某种(任何)原因而崩溃时,就会出现问题。
通常,Android 会关闭 Activity,将前一个处于活动状态的 Activity 置于前台。由于之前的活动也以某种方式使用了单例,因此它需要从中恢复数据(例如)。问题是,当先前的活动在新的应用程序上下文中运行时,单例不再可用,这迫使单例在没有数据的情况下重新实例化自己。
解决这个问题的一种方法似乎是将状态(序列化或非序列化)存储在文件或数据库中,但这意味着几乎所有其他用户活动都应该避免过多的读写操作。除了 UX,此解决方案可能会因同步错误或不及时同步而导致数据不一致或错误。
我想听听您对此事的意见。 干杯!
这里是单例实例化方法。
final public class Data {
private static Data INSTANCE = new Data();
private Data() {}
public static Data getInstance() {
return INSTANCE;
}
}
【问题讨论】:
-
你如何实例化你的单例?贴一些代码。
-
你不能用 sharedpreferences 代替吗?
-
@localhost 你去。
-
@Poutrathor 需要保存的数据很多,所以我不喜欢这个主意。但作为最后的手段,它会是这样的......
-
对于那些投反对票的人,请善待并详细说明您的决定。如果问题有问题,我很乐意修复它(并从过程中学习)
标签: android android-activity exception-handling singleton