activity对象什么时候被创建,什么时候被销毁? 请说的形象一些
activity里的onCreate方法什么时候执行,会被执行几次?
如果界面布局中有文本框,我们一般会为其设置一个id用来获取内容
在activity中用findViewById()来获取,
但为了避免每次都会调用该方法,我们会将其设置成成员变量,这样只需获得一次
public class XxxActivity extends Activity
{
private EditText text;
public void onCreate(...)
{
....
text = this.findViewById(...);
...
下面就是一个触发按钮的事件(比如保存)
}
}
问题: 当我们使用这个软件的时候,可能会多次用到"保存"按钮,那么是onCreate方法执行多次,还是匿名内部类中的方法执行多次呢?
如果是onCreate方法执行多次,那么我们获取指定id的文本框对象也会多次调用了(小弟也觉得不可能)
如果是onCreate方法执行一次,那么其内部的匿名类中的方法为何会执行多次? 这个我想不明白
(比如我写了一段文本,点保存,然后又重新写了一段文本,在保存,小弟以为是内部类中的方法会执行2次,应该是把?)
如果android牛人看到此问题,在博得一笑的同时请添上寥寥几笔以解困惑
如果是跟小弟一样的新手也曾有所困惑的但弄明白了,请不吝赐教
小弟刚到此论坛,积分不多,敬上5分,以表感谢!!
1.activity代表一个界面,就是一个手机屏幕。activity对象在第一次调用的时候通过onCreate()创建,然后放到activity栈中,activity在栈中有集中状态,比如活跃了,暂停了等等。当kill或者调用onDestroy()的时候activity对象被销毁,从activity栈中移除。
2.activity的onCreate()在第一次调用的时候执行,只执行这一次,之后不再执行,如果需要展示该activity,直接从activity栈中取得。
3.onCreate()执行一次,匿名内部类里的回调函数执行的次数和触发事件的次数一样。
以单击事件为例,当执行onCreate()的时候,只是为按钮设置好一个“事件监听的接口”,我们这个接口的匿名内部类里回调函数的实现是不会被执行的,只有当按钮被单击的时候才会执行匿名内部类里的单击回调函数。比如我说,唉,这个皮球给你color=red)[/color],我只是给你啦,皮球自己是不会弹起来的color=red[/color],它只有在你拍它的时候color=red[/color]才会弹起来,你拍几次它就会谈起几次color=red[/color]!不知道这么对比你明白了没有!
楼上的关于 onCreate正解.
至于你说的 匿名内部类的问题:
其实这个跟 匿名内部类 这个名称没有任何关系.
只跟你这个匿名类是干嘛的 这个匿名类从你描述中,应该是 一个button的onClickListener.这个函数 当然会执行多次,他是 按钮单击事件侦听函数,当这个按钮有单击事件发生时,系统就会调用这个button的OnClickListener的 onClick()方法. 所以当你点了几次保存,就会执行多少次onClick方法.
即使你不用匿名类,这个onClick依然会执行多少次.
这里使用匿名内部类是因为优雅,还省内存空间,因为不用创建对象。当然使用匿名内部类所实现的接口不能有太多方法,要不然程序可读性就太差了,最好不能超过2个!
不是这样的,onCreate只是初始化操作,它只负责把单击事件的操作绑定到对应的按钮上,不负责执行里面的事件触发函数。
还说那个皮球为题。皮球本身具有了响应人“拍”这个事件动作--就是弹起,就是内部类具有了响应按钮“单击”这个事件的动作--就是执行onClick函数。然后我把球给你,就是字型onCreate函数,这是顺序执行吧,但是球没有弹起来,所以就是没有执行单击事件。
然后你排球,使球弹出来,照你的理解我还要在你拍球的时候一次次传给你球,事实上不是这样的,相信你能理解这个,球只会自己弹出来,就像只会执行内部类的onClick事件,而不会执行OnCreate一样!明白了这下!