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