温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

activity 的view 回收

发布时间:2020-07-05 01:29:09 来源:网络 阅读:1267 作者:吴细福 栏目:开发技术

疑问一:android程序运行机制是怎样的?该看那些数来了解?
疑问二:如题:比如我的一个布局文件中有两个button,然后在onCreate中声明了两个引用变量指向这两个button,并注册监听器响应用户动作。我所疑惑的是在方法里定义的变量不是随着方法的结束而销毁的吗?就像以上的两个指向button的变量,那onCreate后变量不存在了还如何来监听用户动作? 还有就是activity在经历了oncreate,onstart,onresume方法后是处于一种什么样的状态?我的猜测是就是处在一种监听用户动作的状态了,但就像上面提到的方法内定义变量的疑惑那样,我认为界面上的组件(如button)不是应该定义为activity的成员变量才能成立才好理解吗?
望赐教!


activity  的view 回收

我觉得Activity创建好以后,其所对应的XML布局文件会在内存中建立好视图树对象层次结构(在内存的堆区);而在onCreate方法中使用 findViewById 方法,获得的是堆区中视图控件对象的指针。当onCreate方法结束后,只是销毁了onCreate方法内部定义的局部变量(栈区内存),并没有销毁堆区的内存,所以,视图控件仍然可以点击,并做出事件响应。(即activity对象堆区在oncreate()方法后就有成员变量view,该view的生命周期是跟随activity对象的不是随着oncreate()方法的)


oncreate中有个方法叫setContentView,每一个Activity都会加载一个视图,就是说有一个成员变量View,setContentView(View),就是给这个成员变量赋值,所以说oncreate里面定义的两个button虽说是局部变量,同时也是VIew这个成员变量的属性,Button btn = this.findViewById();这里用this来findView,说明button已经存在于activity中,btn这个局部变量是成员变量View通过Id找出来的,而不是new 出来的。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI