Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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 - Fatal编程技术网

Android 如何管理应用程序实例的生命周期

Android 如何管理应用程序实例的生命周期,android,Android,我有一个子类应用程序来保持静态变量中的全局状态。但是,如果将应用程序留在后台,它最终将被杀死,这意味着我的全局状态将丢失 我试图通过子类化Activity和重写onSaveInstanceState来克服这个问题,以便在每次销毁活动时保存全局状态,然后在创建活动时重新创建它。但是,每次创建活动时,这会产生不可忽略的开销 有人可能会说,如果应用程序被终止,正确的行为应该是让用户从第一个活动开始重新启动,但由于应用程序经常被终止,我认为这是不可接受的 有更好的方法吗?我看到一些建议,将全局状态保存在

我有一个子类应用程序来保持静态变量中的全局状态。但是,如果将应用程序留在后台,它最终将被杀死,这意味着我的全局状态将丢失

我试图通过子类化Activity和重写onSaveInstanceState来克服这个问题,以便在每次销毁活动时保存全局状态,然后在创建活动时重新创建它。但是,每次创建活动时,这会产生不可忽略的开销

有人可能会说,如果应用程序被终止,正确的行为应该是让用户从第一个活动开始重新启动,但由于应用程序经常被终止,我认为这是不可接受的


有更好的方法吗?我看到一些建议,将全局状态保存在共享首选项中,而不是静态变量中,但出于某种原因,我认为该解决方案并不令人信服。

onSaveInstanceState用于中断,用户在交互时活动/被破坏。您应该在此处保存小的状态信息,例如,为可见视图输入的文本EditText。。。。发生这种情况的示例有:旋转设备,活动被破坏并重新创建,传入呼叫


如果用户在一段时间内没有与应用程序交互,则应永久保存状态。在这种情况下,我建议使用SharedReferences或数据库。这需要更多的工作,但我认为这是最好的解决方案。

但我不知道用户是否会与应用程序交互。是否可以调用onSaveInstanceState是因为传入呼叫,还是因为用户决定运行另一个应用程序一小时?这甚至可能是因为我调用了需要大量内存的外部活动(如视频录制),当调用onActivityResult时,我的全局状态为dead。关键是,应该使用onSavedInstanceState方法保存小的状态信息。但是完整的应用程序状态不应该。