Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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 应用程序错误时应用程序上下文变量的值丢失_Android_Memory - Fatal编程技术网

Android 应用程序错误时应用程序上下文变量的值丢失

Android 应用程序错误时应用程序上下文变量的值丢失,android,memory,Android,Memory,我注意到,当我的应用程序遇到错误时,我的应用程序上下文变量的值也会重新初始化为其原始值(而不是更新后的值)。根据我的理解,发生这种情况是因为重新创建了应用程序 发生应用程序错误时,如何保存和恢复应用程序上下文变量的值?如果您能更详细地解释一下我的应用程序遇到错误时后台的工作情况,我也会很高兴。 注意:我了解到解决方案之一是使用SharedReferences。但是,即使在应用程序死机时,SharedReferences也会保存数据。我不想在应用程序死机时保存数据。我只想在应用程序处于活动状态或在

我注意到,当我的应用程序遇到错误时,我的应用程序上下文变量的值也会重新初始化为其原始值(而不是更新后的值)。根据我的理解,发生这种情况是因为重新创建了应用程序

发生应用程序错误时,如何保存和恢复应用程序上下文变量的值?如果您能更详细地解释一下我的应用程序遇到错误时后台的工作情况,我也会很高兴。

注意:我了解到解决方案之一是使用SharedReferences。但是,即使在应用程序死机时,SharedReferences也会保存数据。我不想在应用程序死机时保存数据。我只想在应用程序处于活动状态或在后台时保存数据

发生应用程序错误时,如何保存和恢复应用程序上下文变量的值

首先,不要有未处理的异常

其次,不要依赖静态数据成员或自定义
应用程序
子类实例。在许多情况下,您的流程将被终止,而这些值将消失。它们应该用于持久性内容的内存缓存,而不是其他


有时,未经处理的异常确实出乎意料,但这些异常应该很少发生,并且通常与特定设备相关(例如,存储空间不足)。其他一切都代表应用程序中的错误,您必须修复这些错误。

您是指导致崩溃的应用程序错误,还是指正在捕获的错误?我有点困惑到底发生了什么,是你的应用程序崩溃并丢失数据,还是发生了什么?我指的是导致崩溃的应用程序错误。错误来自未处理的异常。是的,我的应用程序正在崩溃,当它恢复时,数据已经丢失。(应用程序在崩溃后自动重新创建自己。)确切地说,不要试图修复应用程序以保存值来准备未处理的异常,修复了未处理的异常:)。@commonware:谢谢!我会记住这一点。然而,正如您所说的,有时未处理的异常确实出乎意料。你能建议一种方法,这样我可以保留全局变量,避免丢失数据吗?另外,根据您在第2段中所说的,这是否意味着来自自定义应用程序子类实例的变量确实会以这种方式运行(当进程意外终止时会丢失数据),而我对此无能为力?@Arci:“你能建议一种方法,让我可以保留全局变量,这样我就可以避免丢失数据吗?”--不。全局变量将用于持久数据的缓存。“我对此无能为力?”--当然。这是所有创建的操作系统中的每一个程序的行为,好吧。如果你的应用程序崩溃,你的内存就会“砰砰”地响“@Jack:是的,我会捕获未处理的异常。但我还想确保在我的应用程序突然遇到意外错误时不会丢失任何数据。@commonware:谢谢你向我解释清楚。但我只是想知道为什么我的活动在遇到错误后仍被重新创建?当我的应用程序遇到错误时,它会显示一个对话框,要求我强制关闭活动。当我单击强制关闭按钮时,将重新创建我的应用程序(不询问我),并显示我以前的活动,减去丢失的数据。我想如果我在一个错误后强制关闭我的应用程序,它不应该被重新创建,因为我已经关闭了它?