activity的總結

萬丈高樓平底起。做什麼事都要打好基礎。作爲一名三流的 程序員在經過幾輪大公司的面試後,深刻的 體會到基礎是多麼重要。

Activity

Activity是安卓中四大組件之一,在項目中佔據着十分重要的角色

Activity的生命週期如下 圖:



大家需要注意的是途中的綠色的部分(也是面試題裏經常問到的)

舉個例子在標準模式下activityA跳轉到activityB的時候,activityA會先執行onPause方法之後就是activity的啓動生命週期,當activityB完全展示的時候,activityA會再調用它的onStop方法。大家一定要注意,很多面試題會遇到。

 

 

下面我們具體的介紹這幾個生命週期中的重要方法。

1.啓動Activity:系統會先調用onCreate方法,然後調用onStart方法,最後調用onResume,Activity進入運行狀態。

2.當前Activity被其他Activity覆蓋其上或被鎖屏:系統會調用onPause方法,暫停當前Activity的執行。

3.當前Activity由被覆蓋狀態回到前臺或解鎖屏:系統會調用onResume方法,再次進入運行狀態。

4.當前Activity轉到新的Activity界面或按Home鍵回到主屏,自身退居後臺:系統會先調用onPause方法,然後調用onStop方法,進入停滯狀態。

5.用戶後退回到此Activity:系統會先調用onRestart方法,然後調用onStart方法,最後調用onResume方法,再次進入運行狀態。

6.當前Activity處於被覆蓋狀態或者後臺不可見狀態,即第2步和第4步,系統內存不足,殺死當前Activity,而後用戶退回當前Activity:再次調用onCreate方法、onStart方法、onResume方法,進入運行狀態。

 

 

這些只是activity的一些基礎方法,啓動、可見和不可見的執行操作。所以在開發項目的時候,需要重新獲取數據或者保存一些參數設置的時候,在這些方法中都可以嘗試操作。

 

再介紹幾種不常用的一下方法:

1.onRestart()方法,當activity從後臺或者覆蓋狀態下回到前臺的時候調用此方法。

2.onWindowFocusChanged()方法,可以從字面意思理解這個方法,窗口聚焦狀態變化,我們可以理解爲在當前窗口的activity是否可操作。那麼一個activity從創建到銷燬,那麼這個方法至少要被調用兩次(在onResume(獲得焦點後)掉用一次,在onPause(失去焦點後),調用一次)。這個方法在一些做一些動畫效果的時候很有用。舉個例子。我在給揚州光電做一個內網播放視頻的app的時候,用的是SurfaceView和mediaPlayer搭配的播放器,在onCreate中進行畫布的創建,時不時出現無法播放,這個問題困了我好久,最後不得不事先訪問網絡數據,再進行數據的傳遞。偶然在網上看到這個介紹,拿過去一試,就ok了。原因就是在網絡好的時候數據先拿到,而window中的對象還沒初始化完成,TM當然播不了了。

3.onSaveInstanceState()方法,(1)在Activity被覆蓋或退居後臺之後,系統資源不足將其殺死,會被調用;(2)在用戶改變屏幕方向時,此方法會被調用;(3)在當前Activity跳轉到其他Activity或者按Home鍵回到主屏,自身退居後臺時,此方法會被調用。第一種情況我們無法保證什麼時候發生,系統根據資源緊張程度去調度;第二種是屏幕翻轉方向時,系統先銷燬當前的Activity,然後再重建一個新的,調用此方法時,我們可以保存一些臨時數據;第三種情況系統調用此方法是爲了保存當前窗口各個View組件的狀態。onSaveInstanceState的調用順序是在onPause之前。

4..onRestoreInstanceState:(1)在Activity被覆蓋或退居後臺之後,系統資源不足將其殺死,然後用戶又回到了此Activity,此方法會被調用;(2)在用戶改變屏幕方向時,重建的過程中,此方法會被調用。我們可以重寫此方法,以便可以恢復一些臨時數據。onRestoreInstanceState的調用順序是在onStart之後。

5.onConfigurationChanged:這個方法是當橫豎屏互轉的時候調用。可能很多人沒用到,橫豎屏直接在清單文件中寫死了,一般都不讓它橫豎轉動。但是當你的項目中有播放器的時候,一般都會用到,全屏與半屏的切換,當你在清單文件中配置讓activity不重新走onCreate方法的時候,那麼一些數據的設置就需要在這個方法中進行了。因爲其他方法是不會走的。這也是我在做一個醫藥項目的時候遇到的問題,播放器在全屏後可以選擇點開目錄選擇播放章節,再切回到豎屏狀態,目錄要變化,就需要在這個方法中進行操作。

6.onNewIntent:最後介紹一個可能很多人都沒用過的方法。這個方法涉及到activity的四種啓動模式。即當的activity的啓動模式爲SingleTask的時候,此activity重新到棧頂的時候調用。(去土豆麪試的時候問到了)


發佈了32 篇原創文章 · 獲贊 42 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章