今晚在複習Android基礎的時候,找到了一些很有價值的基礎知識,分享給給位Android的開發人員。這些是基礎知識,同時也可以當做面試準備。面試題其實是很好的基礎知識學習,有空會好好整理相關基礎知識。
1.Activity的生命週期
方法
描述
可被殺死
下一個
onCreate()
在activity第一次被建立的時候調用。這裡是你做所有初始化設定的地方──建立視圖、設定布局、綁定資料至列表等。如果曾經有狀態記錄(參閱後述Saving Activity State。),則調用此方法時會傳入一個包含著此activity以前狀態的包對象做為參數。
總繼之以onStart()。
否
onStart()
onRestart()
在activity停止後onStop(),在再次啟動之前被調用。
總繼之以onStart()。
否
onStart()
onStart()
當activity正要變得為使用者所見時被調用。
當activity轉向前台時繼以onResume(),在activity變為隱藏時繼以onStop()。
否
onResume()
or
onStop()
onResume()
在activity開始與使用者進行互動之前被調用。此時activity位於堆棧頂部,並接受使用者輸入。
繼之以onPause()。
否
onPause()
onPause()
當系統將要啟動另一個activity時調用。此方法主要用來將未儲存的變化進行持久化,停止類似動畫這樣耗費CPU的動作等。這一切動作應該在短時間內完成,因為下一個activity必須等到此方法返回後才會繼續。
當activity重新回到前台是繼以onResume()。當activity變為使用者不可見時繼以onStop()。
是
onResume()
or
onStop()
onStop()
當activity不再為使用者可見時調用此方法。這可能發生在它被銷毀或者另一個activity(可能是現存的或者是新的)回到運行狀態並覆蓋了它。
如果activity再次回到前台跟使用者互動則繼以onRestart(),如果關閉activity則繼以onDestroy()。
是
onRestart()
or
onDestroy()
onDestroy()
在activity銷毀前調用。這是activity接收的最後一個調用。這可能發生在activity結束(調用了它的 finish() 方法)或者因為系統需要空間所以臨時的銷毀了此acitivity的執行個體時。你可以用isFinishing() 方法來區分這兩種情況。
是
nothing
1、onCreate():當Activity被建立的時候調用(第一次)。操作:設定布局檔案,初始化視圖,綁定資料檔案等。
2、onStart():當Activity能被我們看到的時候。
3、onResume():當Activity獲得使用者的焦點的時候,就是能被使用者操作的時候。
4、onPause()[pause暫停意思]:Activity暫停。應用程式啟動了另一個Activity的時候。例子:來了一個電話,系統啟動了電話Activity。在這個函數裡要做的就是把Activity的資料儲存起來,當接完電話的時候,再把這些資料讀出來,把原來的Activity還原出來。
5、onstop():當第二個Activity把第一個Activity完全遮擋住了的時候。對話方塊並沒有把原來的Activity完全遮擋起來,不會調用。
6、onDestroy():銷毀Activity。1)調用了finish()方法。2)系統資源不夠用了。
函數調用過程:
啟動第一個Activity的時候:
第一次建立onCreate()-->Activity可見了onStart()-->Activity可以操作了onResume()。
點擊第一個Activity上的按鈕通過Intent跳到第二個Activity:
第一個Activity暫停onPause()-->建立第二個ActivityonCreate()-->Activity可見onStart()-->Activity可操作onResume()-->第一個Activity被第二個Activity完全遮蓋onStop()(如果調用了finish(),或者系統資源緊缺,則會被銷毀onDestory())。
點擊系統返回功能建,從第二個Activity回到第一個Activity :
第二個Activity暫停onPause()-->第一個Activity重啟動OnRestart()(並沒有被銷毀,如果銷毀了則要建立onCreate())-->第一個Activity可見onStart()-->第一個Activity可操作onResume()-->第二個Activity被完全遮蓋onStop()(如果調用了finish(),或者系統資源緊缺,則會被銷毀onDestory())。
2.橫豎屏切換時候activity的生命週期
1.不設定Activity的android:configChanges時,切屏會重新調用各個生命週期,切橫屏時會執行一次,切豎屏時會執行兩次.
2.設定Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命週期,切橫、豎屏時只會執行一次.
3.設定Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命週期,只會執行onConfigurationChanged方法.
3.android中的動畫有哪幾類,它們的特點和區別是什麼?
Android提供兩種建立簡單動畫的機制:tweened animation(補間動畫) 和 frame-by-frame animation(幀動畫).
•tweened animation:通過對情境裡的對象不斷做映像變換(平移、縮放、旋轉)產生動畫效果
•frame-by-frame animation:順序播放事先做好的映像,跟電影類似
這兩種動畫類型都能在任何View對象中使用,用來提供簡單的旋轉計時器,activity表徵圖及其他有用的UI元素。Tweened animation被andorid.view.animation包所操作;frame-by-frame animation被android.graphics.drawable.AnimationDrawable類所操作。
想瞭解