Android 我真的需要保存实例状态吗

Android 我真的需要保存实例状态吗,android,Android,我正在开发一个不支持屏幕旋转的应用程序。我真的需要保存所有活动的实例状态吗?android杀死活动的情况有多罕见?如果该活动被终止并恢复,它只会像用户第一次访问它时那样看着用户,如果系统终止了它,这可能是很久以前的事了。如果这种情况很少发生的话,对我来说,这似乎不是一种糟糕的用户体验。你觉得怎么样?这实际上取决于你正在开发的屏幕类型。例如,当活动包含大量数据时,保存活动状态(而不是所有活动)应该很方便 如果您有几个字段需要用户重新填充,这可能是一种糟糕的体验,尤其是如果设备的虚拟键盘不是那么容易

我正在开发一个不支持屏幕旋转的应用程序。我真的需要保存所有活动的实例状态吗?android杀死活动的情况有多罕见?如果该活动被终止并恢复,它只会像用户第一次访问它时那样看着用户,如果系统终止了它,这可能是很久以前的事了。如果这种情况很少发生的话,对我来说,这似乎不是一种糟糕的用户体验。你觉得怎么样?

这实际上取决于你正在开发的屏幕类型。例如,当活动包含大量数据时,保存活动状态(而不是所有活动)应该很方便

如果您有几个字段需要用户重新填充,这可能是一种糟糕的体验,尤其是如果设备的虚拟键盘不是那么容易,例如假设您使用的是Galaxy mini

换句话说,这是一个很好的实践,但用户体验是否会降级取决于您


Serge这实际上取决于您正在开发的屏幕类型。例如,当活动包含大量数据时,保存活动状态(而不是所有活动)应该很方便

如果您有几个字段需要用户重新填充,这可能是一种糟糕的体验,尤其是如果设备的虚拟键盘不是那么容易,例如假设您使用的是Galaxy mini

换句话说,这是一个很好的实践,但用户体验是否会降级取决于您


Serge

如果一个应用程序仅仅因为我去设置更改屏幕亮度而失去状态,那将是一次灾难性的用户体验。这种情况经常发生在512MB RAM设备上——这些设备仍在大量销售。现在甚至还生产了256MB的设备


是的,经常发生。这种情况发生在某些用户身上的频率比发生在其他用户身上的频率要高得多。那些用户不会原谅你的应用程序。

如果一个应用程序仅仅因为我去设置更改屏幕亮度而失去状态,那将是一次灾难性的用户体验。这种情况经常发生在512MB RAM设备上——这些设备仍在大量销售。现在甚至还生产了256MB的设备


是的,经常发生。这种情况发生在某些用户身上的频率比发生在其他用户身上的频率要高得多。那些用户不会原谅你的应用。

FWIW,我已经为我们当前的产品编写了几个单方向应用程序,我觉得保存状态仍然很重要。当一切都是您返回时留下的方式时,它只会使应用程序更可用

一般来说,这也不需要太多的工作。首先,请记住,如果为布局中的视图指定ID,则默认的Activity.onSaveInstanceState将完成大部分工作。它将记住复选框状态、编辑文本内容等。您需要保存的内容相对较少。以下是我与州政府一起保存的一些东西:

相关活动参数 列表视图位置信息 选项卡视图中的当前选项卡
活动参数是目前最常见的。

FWIW,我已经为我们当前的产品编写了几个单方向应用程序,我觉得保存状态仍然很重要。当一切都是您返回时留下的方式时,它只会使应用程序更可用

一般来说,这也不需要太多的工作。首先,请记住,如果为布局中的视图指定ID,则默认的Activity.onSaveInstanceState将完成大部分工作。它将记住复选框状态、编辑文本内容等。您需要保存的内容相对较少。以下是我与州政府一起保存的一些东西:

相关活动参数 列表视图位置信息 选项卡视图中的当前选项卡
活动参数是目前最常见的。

它取决于视图的内容以及当前状态保存的重要性。对于旋转,只需将处理方向更改添加到清单中,而不是终止活动,它将只调用OnConfiguration Changed。最后,有很大一部分应用程序会这样做。@Gabeschen是的,不幸的是,如果我接到一个电话并返回,或者我改变时区,或者我去设置并返回等等,许多相同的应用程序都会崩溃。假装生命周期不存在是不好的做法,毕竟,这很容易处理。我会进一步指出,很多应用程序开发者都在考虑测试用户应该做的事情,可能会用奇怪的屏幕旋转来测试他们自己——Yeh,它是有效的。让它上市。@Simon所有这些都不是应用程序重启。他们要求暂停/恢复,这是你必须处理的。但它们不会创建新的活动。所以在这一点上,我不同意——破坏和重新创建轮换活动的想法被谷歌脑死了,而对付他们愚蠢行为的正确方法是利用他们留下的漏洞
移除它。见鬼,即使是谷歌的大多数应用程序也能做到这一点。完全不同意。这些事情中的任何一个都可能导致重启,而且通常都是这样,因为Android可以在该活动离开前台时立即终止该活动。没有任何合同规定它不会因任何原因重新启动。远离脑死亡,生命周期正是要处理这个问题的。这里真正的问题是试图将旋转与任何其他可能终止活动的应用程序外事件分开。这取决于视图的内容以及保存当前状态的重要性。对于旋转,只需将您处理的方向更改添加到清单中,它将只调用onConfigurationChanged,而不是终止您的活动。最后,有很大一部分应用程序会这样做。@Gabeschen是的,不幸的是,如果我接到一个电话并返回,或者我改变时区,或者我去设置并返回等等,许多相同的应用程序都会崩溃。假装生命周期不存在是不好的做法,毕竟,这很容易处理。我会进一步指出,很多应用程序开发者都在考虑测试用户应该做的事情,可能会用奇怪的屏幕旋转来测试他们自己——Yeh,它是有效的。让它上市。@Simon所有这些都不是应用程序重启。他们要求暂停/恢复,这是你必须处理的。但它们不会创建新的活动。所以在这一点上,我不同意——破坏和重新创建轮换活动的想法被谷歌脑死了,处理他们愚蠢行为的正确方法是利用他们留下的漏洞来消除它。见鬼,即使是谷歌的大多数应用程序也能做到这一点。完全不同意。这些事情中的任何一个都可能导致重启,而且通常都是这样,因为Android可以在该活动离开前台时立即终止该活动。没有任何合同规定它不会因任何原因重新启动。远离脑死亡,生命周期正是要处理这个问题的。这里真正的问题是试图将旋转与任何其他可能导致活动停止的应用程序外事件分开。我有一个192 MB的设备!答案是肯定的,因为有很多原因导致你的应用程序可能会停止活动-内存问题-很多配置更改etcI都有192 MB的设备!答案是肯定的,因为你的应用程序可能会有很多原因导致其活动停滞-内存问题-许多配置更改等