1. 程式人生 > >Android面試集錦之Activity(知識整理)

Android面試集錦之Activity(知識整理)

面試集錦是參考了慕課網BAT某大神的視訊。
本文分為四個部分:
1.Activity生命週期
2.Activity任務棧
3.Activity啟動模式
4.scheme跳轉協議

一、Activity的生命週期
什麼是Activity?
android與使用者進行互動的時候,提供了一個介面,供使用者進行點選滑動等各種操作。這就是Activity!
Activity的四種狀態:
running/paused/stopped/killed
running:處於棧頂
paused:失去焦點,或者被一個透明的Activity擋住,失去了與使用者互動的能力
stopped:activity被另一個activity完全覆蓋,不可見,記憶體狀態資訊都有可能還在(記憶體不緊張,同paused一樣)
killed:資訊沒了
啟動流程:


onCreate()–>onStart()[activity處於啟動狀態,已經可見不可觸控]–>onResume()[已經可以互動了]
按Home鍵返回主頁面
onPause()[使用者可見,但已經不能互動了,對應onresume]–>onStoped()[activity已經停止,完全不可見,後臺執行,若資源吃緊,可能會回收掉]
返回原Activity
onRestart()–>onStart()–>onResume()
退出當前Activity
onPaused()–>onStopped()–>onDestory()
小知識點:android程序優先順序

前臺/可見/服務/後臺/空

二、android任務棧
任務棧並不是唯一的;
三、activity啟動模式
1.standard
標準模式,也是預設的模式,每次啟動activity,都會重新建立一個加到任務棧中,沒次進入都會完全的走一遍生命週期方法,很浪費資源。
2.singletop
棧頂複用;如果建立的activity在棧頂,才會複用;如果不是棧頂,那就不復用了,感覺用的地方很少。
3.singletask
棧內複用;檢查整個棧內有沒有此acitivity,有的話就直接複用。對比第2個,你就發現這個是加強版(快速點選一個跳轉acitivty的地方會開啟多個頁面,這個時候用singletask就能完美解決了)
4.singleinstance
這個模式用的就很少了,一個activity佔用一個棧
四、shceme跳轉協議!


android的scheme是一種頁面內跳轉協議,通過定義自己的scheme協議,可以非常方便跳轉app中的各個頁面;通過scheme協議,伺服器可以定製化告訴app跳轉哪個頁面,可以通過通知欄訊息定製化跳轉頁面,可以通過H5頁面跳轉到app的頁面。
應用場景
1.服務端可以下發一個url路徑,客戶端可以根據這個url跳轉到相應頁面
2.從H5頁面跳轉到本地的activity
3.app可以根據一個url跳轉到另一個app的頁面中(大公司會有多個app)
現在用處很多,需要進行詳細瞭解!!!