Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android alwaysRetainTaskState无法按预期工作。Singleton类正在失去其状态_Android_Android Activity_Android Lifecycle - Fatal编程技术网

Android alwaysRetainTaskState无法按预期工作。Singleton类正在失去其状态

Android alwaysRetainTaskState无法按预期工作。Singleton类正在失去其状态,android,android-activity,android-lifecycle,Android,Android Activity,Android Lifecycle,在我的应用程序第一次运行时,在root活动中,用户需要选择特定的选项,以确定将从数据库中为他下载哪些数据 一旦他选择了这个选项,数据就会被下载并保存在一个单例类中,该类应该在应用程序运行期间保存该数据。即使在幕后 我的问题是,有时在用户使用home按钮退出我的应用程序一段时间后,Android显然会终止我应用程序中的一些活动,并且不知何故,它会重置重要的singleton类。导致我的应用程序在我尝试访问本应保存在singleton上的数据时收到各种空引用异常 我知道Android操作系统有时可以

在我的应用程序第一次运行时,在root活动中,用户需要选择特定的选项,以确定将从数据库中为他下载哪些数据

一旦他选择了这个选项,数据就会被下载并保存在一个单例类中,该类应该在应用程序运行期间保存该数据。即使在幕后

我的问题是,有时在用户使用home按钮退出我的应用程序一段时间后,Android显然会终止我应用程序中的一些活动,并且不知何故,它会重置重要的singleton类。导致我的应用程序在我尝试访问本应保存在singleton上的数据时收到各种空引用异常

我知道Android操作系统有时可以选择关闭应用程序,但允许用户从上次访问的活动中返回应用程序。有时,它只会杀死整个应用程序,并强制用户从头开始

我正在寻找一个解决方案,我发现了android:AlwaysRelatitaskstate属性,我可以应用于我的根活动。显然,每当android决定终止我的应用程序时,它至少会迫使用户从我可以重新下载数据的第一个活动开始,而不是允许用户从更高级的活动开始,从而导致他获得空异常

但是,当我在应用程序上应用它时,它不起作用,当我返回到应用程序时,我从一个高级活动开始,只有一个空的单例实例

我也试过android:clearTaskOnLaunch,它很管用,但这太过分了,因为我不希望每次用户返回应用程序时,他都必须重新开始。我希望只有当安卓决定终止应用程序时,这种情况才会发生

我做错什么了吗?有没有可能有更好的办法让单身汉活着


谢谢

没有。没有更好的解决办法。这就是它的工作原理。Android可以随时终止应用程序的进程,只要它在后台。您可以将数据保存在单例中,但无论如何,Android都有可能终止您的进程。当用户返回应用程序时,Android将创建一个新进程,然后创建用户正在恢复的活动的新实例。您需要在所有活动的onCreate中放入代码,以识别您的singleton已消失,然后执行适当的操作,或者重定向到应用程序的根活动,或者重新初始化您的singleton

很容易判断进程是否已被终止并重新创建。只需向singleton添加一个静态布尔变量,在初始化后将其设置为true。在所有活动的onCreate中,检查该变量的状态,如果该变量为false,则执行一些智能操作