我是开发Android的新手。我遇到了以下问题:
我正在开发一个扩展Application类的Android应用程序。身份验证会话的值存储在此类中,因为它应该创建一次,并且在所有活动和服务中都可用。
当我打开我的应用程序并使用主页按钮关闭它并在我打开许多其他应用程序后重新打开它时,将重新创建基本应用程序类(onCreate被调用)。发生这种情况时,我会丢失我的身份验证值。似乎onCerminate或onLowMemory在再次调用onCreate之前没有被调用。我的应用程序的当前状态没有消失,因为先前活动的活动仍然可用。
当我使用主页按钮关闭应用程序并仅打开其他一些应用程序时,应用程序将恢复正常。
我还尝试实现单例类,但如果重新创建应用程序类,则单例对象也为null。
如何阻止重新创建应用程序类,或解决此问题?
由于 雅各布
答案 0 :(得分:0)
我发现应用程序类也可以作为应用程序生命周期的一部分重新启动。我将我的身份验证值存储在首选项中以解决此问题
答案 1 :(得分:0)
来自Application.onTerminate()的文档:
此方法适用于模拟过程环境。永远不会 在生产Android设备上调用,删除进程 简单地杀死他们;没有用户代码(包括此回调) 执行时执行。
此外,无法保证会调用onLowMemory
。请检查此answer。
我的应用程序的当前状态没有消失,因为 以前的活动活动仍然可用。
我认为活动刚从Bundle恢复。
如何阻止重新创建应用程序类或工作 围绕这个问题?
您必须准备好随时可以重新创建应用程序。您可以在此类中存储一些数据,但在从某些活动中获取此数据之前,您应该检查它是否为空。它在第一次启动时和应用程序重新创建后将为null。只需填写您的数据并返回活动。