您好,登錄后才能下訂單哦!
疑問一:android程序運行機制是怎樣的?該看那些數來了解?
疑問二:如題:比如我的一個布局文件中有兩個button,然后在onCreate中聲明了兩個引用變量指向這兩個button,并注冊監聽器響應用戶動作。我所疑惑的是在方法里定義的變量不是隨著方法的結束而銷毀的嗎?就像以上的兩個指向button的變量,那onCreate后變量不存在了還如何來監聽用戶動作? 還有就是activity在經歷了oncreate,onstart,onresume方法后是處于一種什么樣的狀態?我的猜測是就是處在一種監聽用戶動作的狀態了,但就像上面提到的方法內定義變量的疑惑那樣,我認為界面上的組件(如button)不是應該定義為activity的成員變量才能成立才好理解嗎?
望賜教!
我覺得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 出來的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。