Android知識點複習1(Activity與Fragment)

超高校級的騷豬發表於2018-02-06

Actiity

1.Activity生命週期

Android知識點複習1(Activity與Fragment)

  • onCreate():當Activity第一次建立的時候呼叫。
  • onStart():Activity已經顯示,但沒有焦點。
  • onResume():Activity可以進行互動了。
  • onPause():Activity失去焦點,無法再與使用者互動,但可見。
  • onStop():Activity不可見狀態。
  • onDestroy():Activity被銷燬。
  • onRestart():Activity從不可見變成可見時會執行此方法。

2.Activity的四種啟動模式(每次看完網上的解釋,然後,然後呢.....?)

  • standard :每次啟動activity都會建立一個activity例項,不管它是否存在
  • singleTop :當啟動activity的時候,如果該activity不在棧頂,會建立一個activity例項,如果他在棧頂存在,執行他的onNewIntent()
  • singeTask :第一次啟動建立例項,以後再啟動執行他的onNewIntent()操作,並銷燬棧中在他上面的其他例項
  • singleInstance:第一次啟動建立例項,在啟動執行onNewIntent(),並且單獨在一個棧中。

onNewIntent()的執行(非生命週期中):

  • 啟動模式singletop(當前activity在棧頂時)以及 singletask會呼叫onNewIntent()。

四種模式適用的情況:

  • standard:用的最多的預設的跳轉。
  • singleTop:1.接收通知後跳轉顯示頁面 2.搜尋介面自己跳轉自己呼叫onNewIntent()。
  • singeTask : 反正就一個。(登陸頁面?主頁?)
  • singleInstance : 一次性玩具?
  • 額外補充一個 Intent.FLAG_ACTIVITY_CLEAR_TASK : 清除所有棧中老的Activity(清道夫?)。

3.未知,待補充。。。。。


Fragment(碎片)

1.Fragment是依賴於Activity的,不能獨立存在的!!!

有次面試,面試官問了一個問題,我矇蔽了半天 :fragment能否獨立存在。what fk is that ?!

Android知識點複習1(Activity與Fragment)

按理說是不能的,但看著面試官邪惡的表情,我居然說:應該不能。。。可怕 ,告辭

2.Fragment的生命週期

  • onAttach():Fragment和Activity相關聯時呼叫。可通過該方法獲取Activity引用,還可通過getArguments()獲取引數。
  • onCreate():Fragment被建立時呼叫。
  • onCreateView():建立Fragment的佈局。
  • onActivityCreated():當Activity完成onCreate()時呼叫。
  • onStart():當Fragment可見時呼叫。
  • onResume():當Fragment可見且可互動時呼叫。
  • onPause():當Fragment不可互動但可見時呼叫。
  • onStop():當Fragment不可見時呼叫。
  • onDestroyView():當Fragment的UI從檢視結構中移除時呼叫。
  • onDestroy():銷燬Fragment時呼叫。
  • onDetach():當Fragment和Activity解除關聯時呼叫。

Android知識點複習1(Activity與Fragment)

3.Fragment與Activity的混合生命週期

  • onCreate()

    Activity onCreate...
    Fragment onAttach...
    Fragment onCreate...
    Fragment onCreateView...
    Fragment onActivityCreated...

  • onDestroy()

    Fragment onDestroyView...
    Fragment onDestroy...
    Fragment onDetach...
    Activity onDestroy...

  • 除此之外初始化的生命週期都是activity先走,pause()等都是fragment先走。

4.Fragment與Activity相互私聊

  • Handle : 在Activity中定義一個handle並且在fragment 的onAttach()生命週期中獲取 (fragment通知Activity)。
  • 廣播(????呵呵) (相互私聊)
  • 介面方案: 與Handle方案相似。(fragment通知Activity)
  • context強轉activity呼叫方法。(fragment通知Activity)
  • 觀察者模式(也只能單向????)
  • EventBus:利用反射,好用不要錢 ,目前個人覺得最好的方案。(相互私聊)

5.未知,待補充。。。。。

相關文章