在我的应用程序第一次运行时,在根活动上,用户需要选择某些选项来确定将从数据库中为他下载哪些数据。
一旦他选择了该选项,数据就会被下载并保存在一个单例类中,只要应用程序正在运行,该类就应该保存该数据。(即使在后台)
我的问题是,有时在用户退出我的应用程序一段时间后(使用主页按钮),Android 显然会杀死我应用程序中的一些活动,并且不知何故,它会重置重要的单例类。一旦我尝试访问应该保留在单例中的数据,导致我的应用程序接收各种空引用异常。
我了解 Android 操作系统有时可以选择终止应用程序,但允许用户从上次访问的活动返回到该应用程序。有时它只会杀死整个应用程序并迫使用户从头开始。
我一直在寻找解决方案,并且发现了可以应用于我的根活动的“android:alwaysRetainTaskState”属性。显然,每当android决定杀死我的应用程序时,它至少会迫使用户从我可以重新下载数据的第一个活动开始,而不是允许用户从更高级的活动开始,导致他得到空异常。
但是,当我将它应用于我的应用程序时,它不起作用,当我返回我的应用程序时,我是从一个高级活动开始,使用一个空的单例实例。
我还尝试了“android:clearTaskOnLaunch”并且它有效,但这是一个矫枉过正,因为我不希望每次用户返回应用程序时,他都必须重新开始。我希望它只有在 android 决定终止应用程序时才会发生。
有什么我做错了吗?有没有可能有更好的解决方案来保持单身人士的生命?
谢谢!