2013-04-23 39 views
9

docs关于Activity休闲状态:是在布局包含视图的活动被重新创建时恢复的视图的“标记”?

默认情况下,系统采用Bundle实例的状态保存有关每个视图对象 信息在你的活动布局(如 文本值输入到一个EditText对象) 。因此,如果您的活动 实例被销毁并重新创建,则布局状态为 已恢复到其先前状态,并且没有您要求的任何代码。

docs为View.setTag(对象)状态:

设置与此视图相关联的标记。一个标签可用于在其层次结构中标记 视图,并且在 层次结构中不必是唯一的。也可以使用标签来将数据存储在视图中,而不用诉诸于另一个数据结构。

我的问题是:如果我在活动的布局设置在一个视图中的代码(即具有唯一的ID),并且随后将活性是由系统破坏,随后重建,将这一观点,当重新,自动使用最初设置的对象I进行标记?

+0

虽然没有尝试,但从技术上讲,没有多大意义。 “对象”可以是任何东西,系统可以自杀,以恢复对它没有控制的对象的引用(它不能包含在Bundle中,不清楚浅拷贝是否有意义等), – 2013-04-23 15:06:08

+0

系统预计会在稍后的日期重新创建活动,所以我可以看到它保留了对原始标记的引用。我会测试行为并回报。如果这已被记录在案,会很好。 – jph 2013-04-23 15:16:53

+0

请告诉我。 ;)顺便说一下,'visibility'属性将不会被存储,而其他许多属性都将被存储。 - 它是一个'int'或什么的,我会说好,但'Object'引用在活动被重新创建时将是无效的。但我很好奇你会发现什么。 – 2013-04-23 15:22:04

回答

5

如果我在View的活动布局中设置了一个标记(具有唯一的ID),然后活动被系统销毁并随后重新创建,重新创建时会自动标记该视图与我最初设定的对象?

不,基于我对源代码的阅读。

系统预计会在稍后的日期重新创建活动,所以我可以看到它保留了对原始标记的引用。

这并不总是可能的,因为保存的实例状态Bundle需要跨进程边界传输。

相关问题