【发布时间】:2013-11-06 05:22:07
【问题描述】:
它是关于 void onSaveInstanceState(Bundle saved) 和一个基本的 java 概念。
在调用该方法之前必须创建一个Bundle对象,然后将其传递给该方法。 假设它是这样创建和传递的:
Bundle savedInstanceState= new Bundle();
onSaveInstanceState(savedInstanceState);
此方法将数据保存在该包中。但它不会返回那个包(它已经添加了名称-值对)。
public void onSaveInstanceState(Bundle saved){
. . . //data added to the bundle named saved
}
因此,被声明为参数变量的已保存包仅在方法中具有作用域。在方法内部添加到 save 的数据不会添加到 savedInstanceState。 该方法也没有返回任何内容。
那么当它不改变自身外部的任何包并且也不返回任何东西时,这个方法的意义是什么?
我们也说传递给 onCreate 的包携带了之前保存的活动冻结状态。似乎这个包来自 onSavedInstanceState() 中的处理,但该方法不返回任何内容,也不会更改传递给它的包的值,在它自身之外。我很困惑。
如果有人能帮助我理解这个概念,我将不胜感激。 是的,我已阅读 Activity API 中给出的参考。
【问题讨论】:
-
方法范围不适用于您对获得的对象所做的修改。这些变化仍然存在。唯一停止存在的是您对该对象的(a)引用(即名为
saved的对象),而该对象的实际实例可以在其他地方使用。 -
@user 我用 zapl 的 cmets 更新了我的答案