0

如果宗地大小超过限制,Android 7.0 在恢复实例状态时开始抛出 TransactionTooLargeException。

但是我的应用程序必须保存没有大小限制的加载内容。所以很容易导致这个错误。

在应用程序实例中保存实例状态是否安全?

Activity在后台时会被删除吗?

有没有办法在不抛出这个异常的情况下保存大数据?

4

1 回答 1

0

要一一回答这些问题:

  • 在应用程序实例中保存实例状态是否安全?

如果您的应用程序的进程已被操作系统杀死并稍后恢复,则不想检索该数据。为此,您需要以某种方式将数据持久化到磁盘。正确处理保存状态总是有两个部分:处理涉及进程死亡和实际进程死亡和恢复的配置更改(如轮换)。将状态放入 Application 实例(或任何单例)中可以解决第一个问题,但不能解决第二个问题。

  • Activity在后台时会被删除吗?

取决于您所说的“在后台”是什么意思。这有时可能意味着“活动存在但处于停止状态”。在这种情况下,您的数据很好。但是当应用程序在后台运行时,您的整个应用程序进程可能会被终止,然后在您返回时恢复。在这种情况下,如果您的数据没有正确保存到某个地方的磁盘,您的数据将会消失。

  • 有没有办法在不抛出这个异常的情况下保存大数据?

是的,将其写入数据库并从那里恢复数据。或者,您可以使用此库自动为您处理持久化/从磁盘恢复捆绑包:https ://github.com/livefront/bridge 。

于 2019-02-24T19:12:26.440 回答