onSaveInstanceState包被保存在哪里?

我想知道方法onSaveInstanceState(Bundle outState)的bundle“outState”存储在哪里 。

它存储在内存中还是存储在设备中?

我担心存储在数据包中的数据的安全性。

Solutions Collecting From Web of "onSaveInstanceState包被保存在哪里?"

我不认为有任何恶意的后台进程可以得到你的应用程序的数据包的数据。 没有loggingAndroid如何处理Bundle数据。 如果你的应用程序被清理,而且可能没有被写入磁盘。 但是,由于我们不知道这些数据是否保存在磁盘中,如果是这样的话,由于我们不知道在哪里,几乎可以肯定没有读取磁盘的那部分内容,不担心一些第三方进程能够恢复这些数据。

因此,我不清楚你可能会认为曝光是什么。 虽然我可能会错过一些东西。 然而,在回答你的问题时,当你的应用程序处于活动状态时,这绝对是在内存中,如果你的应用程序是后台的,它可能或不可能写在隐藏的地方,但是我们不知道,因为Google没有告诉我们。

当内存被收集时,它与应用程序一起销毁。

要仅为应用程序生存期(即暂时)存储数据,请使用onSaveInstanceState(Bundle)活动事件

这些数据只能保存在内存中,直到应用程序closures ,数据在应用程序当前生命周期内的任何时候都可以使用。

说明:如果数据按活动A存储在此处,则应用程序显示不同的活动或旋转屏幕(因此closuresA),然后返回到A,可以检索数据以填充控件。 但是,如果应用程序closures并再次打开,数据将消失,控件将恢复为其默认值。

使用示例:存储由用户input的文本和组成订单,博客条目,消息等的select…

注意:

重要的是要注意,只有活动被破坏和重新创build,而不是你的整个应用程序! 一个Android应用程序可以包含许多活动,服务和内容提供者! 如果应用程序closures(例如通过按下“返回”button,则所有的值都将被删除。savedInstaceState仅用于在活动被销毁/重新创build时临时保存数据,而不是应用程序本身。

如果要永久保存数据,则需要将其保存为“首选项”或ContentProvider /数据库。

我的猜测是在内存中,但保护数据的最好方法是不要相信系统并对其进行encryption。 永远不要相信客户端(在这种情况下,客户端就是操作系统)。

编辑:

要清楚的是,我并不是说要对这个包进行encryption。 相反,我的意思是,任何敏感数据都不应该放入捆绑包中。 如果您必须将自定义数据放入捆绑包中,请将其encryption。

但是最终你应该尽可能在客户端保留尽可能less的敏感数据。 这与电子商务网站只显示信用卡的最后4位的原因是一样的。