Android知識點2
一. activity生命周期
- onCreate- -onStart- -onResume- -onPause- -onStop- -onDestroy
- 從A跳轉到B時的生命周期onCreate(A)- -onStart(A)- -onResume(A)- -onPause(A)- -onCreate(B)- -onStart(B)- -onResume(B)- -onStop(A); 從B按回傳鍵回傳A時的生命周期onPause(B)- -onRestart(A)- -onStart(A)- -onResume(A)- -onStop(B)- -onDestroy(B);
- 從A跳轉到不完全覆寫的activity時的生命周期onCreate(A)- -onStart(A)- -onResume(A)- -onPause(A)- -onCreate(B)- -onStart(B)- -onResume(B); 按回傳鍵回傳A時的生命周期onPause(B)- -onResume(A)- -onStop(B)- -onDestroy(B);
- onSaveInstanceState()和onRestoreInstanceState():onSaveInstanceState()在onStop之前呼叫,用于保存Activity的臨時資料,當Activity正常退出(按回傳鍵或finish)時不會呼叫;onRestoreInstanceState()在onStart()之后呼叫,用于重建被殺死的Activity(例:螢屏橫豎方向切換)
二. activity啟動模式launchMode
- standard:標準模式,默認的加載模式,啟動的Activity會依照啟動順序被依次壓入Task中,每次啟動都重新加載
- singleTop:Task堆疊頂單例模式,堆疊頂Activity為我們要新建的Activity(目標Activity),那么就不會重復創建新的Activity
- singleTask:Task內單例模式,如果task堆疊記憶體在目標Activity實體則將task內的對應Activity實體之上的所有Activity彈出堆疊把對應Activity置于堆疊頂,獲得焦點(一般應用在程式的主界面)
- singleInstance:全域單例模式,為目標Activity創建一個新的Task堆疊,將目標Activity放入新的Task,并讓目標Activity獲得焦點,新的Task有且只有這一個Activity實體,如果已經創建過目標Activity實體,則不會創建新的Task,而是將以前創建過的Activity喚醒
三. Bundle
- 資料型別是key-value模式,存盤的資料型別:Map,基本資料型別,基本資料型別陣列,Parcelable型別及Parcelable型別陣列,Serializable型別,ArrayList
- 用于Activity之間的傳值,通過Intent攜帶Bundle型別的資料
- 用于執行緒之間的資料傳遞,通過Handler的message攜帶Bundle型別的資料
四. Fragment
- 生命周期:onAttach- -onCreate- -onCreateView- -onActivityCreated- -onStart- -onResume- -onPause- -onStop- -onDestroyView- -onDestroy- -onDetach
- 動態加載fragment:獲取到FragmentManager通過呼叫beginTransaction方法開啟一個事務,向容器內加入Fragment,一般使用add或者replace方法實作,最后呼叫commit方法提交事務
- ViewPager和fragment結合使用時用到FragmentPagerAdapter與FragmentStatePagerAdapter類
- FragmentManager的add方法添加fragment時,每個fragment只能add一次,重復添加會報錯,之后的fragment之間的切換通過show()和hide()方法實作;replace()方法可以重復添加,作業原理時每次添加前都先remove掉前一個fragment然后再add當前的fragment
五. Handle
- Handler將Message發送到Looper的訊息佇列中,即MessageQueue,等待Looper的回圈讀取Message,處理Message,然后呼叫Message的target,即附屬的Handler的dispatchMessage()方法,將該訊息回呼到handleMessage()方法中,然后完成更新UI操作
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/204026.html
標籤:其他
下一篇:Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final)
