我正在开发一个由10多个活动组成的Android应用程序。我有几个状态对象,几乎在每个活动中都可以访问,为此,这些对象在MyApplication类中作为全局静态变量实现。Android应用程序类中的持久状态
我注意到,只要用户在应用程序中,这种方法就可以。但是,当他按下主页按钮并打开其他应用程序,然后通过“最近的活动”按钮返回到我的应用程序时,我看到Android系统重置了MyApplication中的静态图,因此我必须处理NullPointerExceptions。我知道这种行为是由Android杀死和重新创建应用程序进程造成的。
我知道持久这种数据的最好方法是使用SharedPreferences或SQLite,并且我没有问题检查MyCate == null是否在onCreate并恢复它,但问题是我没有知道当正确地存储我的状态对象(在首选项或数据库中)。我试图覆盖MyApplication的finalize() - 不行,我看到onLowMemory可能不会被调用,我不明白我该如何使用onPause,OnStop等等,因为我有很多活动,以至于序列化反序列化会相当多减慢应用程序。
有什么想法? 在此先感谢!
如果数据不是很大,请将您的持久性对象设置为Singleton。 – vrs
因此,当Android操作系统将重新创建应用程序进程,因此重新创建应用程序类,这个对象将恢复其状态? – rrdev
应用程序的重新启动/休闲取决于几个因素,如内存,应用程序的实时数量,当前没有运行的服务等。因此,将您的数据保存在主要活动中销毁或在Destroy上应用。 – vrs