面試復(fù)習(xí)之Android知識解答

Android知識解答

注:以下AC代表Activity挑宠,F(xiàn)G代表Fragment

1. Activity相關(guān)

1.1 AC的啟動模式

standard:標準模式,默認是標準模式颓影。每一次啟動都會創(chuàng)建一個新的實例各淀,符合典型的AC生命周期。用ApplicationContext去啟動AC會報錯诡挂,因為沒有任務(wù)棧存放碎浇。

singleTop:棧頂復(fù)用模式。如果AC位于任務(wù)棧的棧頂璃俗,那么此AC不會被重新創(chuàng)建奴璃,同時它的onNewIntent方法會被調(diào)用,通過此方法的參數(shù)我們可以取出當前請求的信息旧找。onCreate和onStart不會被調(diào)用溺健。(啟動消息通知界面,循環(huán)搜索界面)

singleTask:棧內(nèi)復(fù)用模式。沒有需要的任務(wù)棧鞭缭,創(chuàng)建新的任務(wù)棧剖膳,放入AC;有任務(wù)棧沒有當前AC實例岭辣,創(chuàng)建實例放入棧中吱晒;有任務(wù)棧有實例,調(diào)用AC到棧頂沦童,并調(diào)用onNewIntent發(fā)法仑濒,清空當前AC上面的AC。(大部分app的首頁偷遗,瀏覽器)

singleInstance:單實例模式墩瞳。加強的singleTask,只會單獨存在于一個特殊的任務(wù)棧中氏豌,后續(xù)請求不會再重新創(chuàng)建喉酌,除非這個單獨的任務(wù)棧被系統(tǒng)銷毀了。(打電話界面泵喘,鬧鐘提醒)

1.2. AC的生命周期泪电,a的onStop和b的onResume誰先執(zhí)行,AC的啟動過程

onCreate:AC正在被創(chuàng)建纪铺,做一些初始化的操作

onStart:可見不可交互

onResume:前臺可交互

onPause:緊接會調(diào)用onStop相速,不要做太耗時的操作

onStop:停止,稍微重量級的回收操作

onDestroy:做回收工作鲜锚,和資源釋放

a啟動b突诬,a的onPause先執(zhí)行,然后b的onCreate烹棉,onStart攒霹,onResume,再到a的onStop浆洗。

AC的啟動過程:啟動AC的請求會有Instrumentation來處理催束,然后它通過Binder向AMS(ActivityManagerService)發(fā)請求,AMS內(nèi)部維護這一個ActivityStack并負責(zé)棧內(nèi)的Activity的狀態(tài)同步伏社,AMS通過ActivityThread去同步Activity的狀態(tài)從而完成生命周期的方法調(diào)用

1.3 AC了解嗎抠刺?onSaveInstanceState和onRestoreInstanceState何時會調(diào)用

Activity是四大組件之一,它提供一個界面讓用戶點擊和各種滑動操作摘昌。

當AC不做特殊處理速妖,系統(tǒng)配置發(fā)生改變,AC就會被銷毀和重新創(chuàng)建聪黎。異常情況下罕容,系統(tǒng)會調(diào)用onSaveInstanceState保存當前AC的狀態(tài),可能在onPause之前,也可能在之后锦秒。只會在AC異常的情況下調(diào)用露泊,正常情況下不會調(diào)用。當AC被重新創(chuàng)建的時候旅择,系統(tǒng)會調(diào)用onRestoreInstanceState惭笑,并且把onSaveInstanceState保存的Bundle對象作為參數(shù)傳給onRestoreInstanceState和onCreate對象。所以可以通過onRestoreInstanceState和onCreate方法來判斷Activity是否被重建生真,重建了沉噩,就可以拿出之前的數(shù)據(jù)并恢復(fù),onRestoreInstanceState在onStart之后被調(diào)用柱蟀。橫豎屏切換的時候川蒙。可以在Manifest設(shè)置onConfigChanges长已。

2. Service相關(guān)

2.1 Service的生命周期

2.2 Service的啟動方式

3. Broadcast相關(guān)

3.1 Broadcast的注冊方式與區(qū)別

4.MVC派歌,MVP,MVVM架構(gòu)的區(qū)別

序列化了解嗎痰哨?兩種方法有什么區(qū)別?Android提供的一般用在哪匾嘱?如何保證對象是你要反序列化的哪一個斤斧?

序列化 (Serialization)是將對象的狀態(tài)信息轉(zhuǎn)換為可以存儲或傳輸?shù)男问降倪^程。在序列化期間霎烙,對象將其當前狀態(tài)寫入到臨時或持久性存儲區(qū)撬讽。以后,可以通過從存儲區(qū)中讀取或反序列化對象的狀態(tài)悬垃,重新創(chuàng)建該對象游昼。

序列化有Java提供的接口Serializable和Android提供的Parcelable。

Serializable:Java提供的尝蠕, 是一個空接口烘豌,為對象提供標準的序列化和反序列化操作。在需要實現(xiàn)序列化的類聲明一個標識serialVersionUID看彼,為了保證序列化前后對象是同一個廊佩。當不主動指定UID的時候,成員變量的數(shù)量和類型發(fā)生改變靖榕,就會導(dǎo)致UID不一樣标锄,如果UID不一樣,就會報InvalidClassException茁计。靜態(tài)成員變量因為屬于類不屬于對象料皇,不會參與序列化的過程;還有用transient關(guān)鍵字標識的成員變量也不參與序列化的過程。

使用場景:雖然Serializable使用起來簡單践剂,但是開銷大鬼譬,序列化和反序列化的過程中需要進行大量的I/O操作。一般在保存數(shù)據(jù)到存儲設(shè)備上或者通過網(wǎng)絡(luò)傳輸?shù)臅r候使用

Parcelable: Android提供的舷手,也是一個接口拧簸。實現(xiàn)Parcelable,需要實現(xiàn)4個方法男窟。

使用場景:因為是Android提供的盆赤,所以在Android平臺上推薦使用Parcelable,雖然使用起來麻煩一點歉眷,但是效率很高牺六,因為Android底層做過優(yōu)化,比如Intent汗捡,bundle傳值之類的淑际。

Intent傳遞的時候可以攜帶哪些對象?Bitmap可以嗎扇住?為什么要規(guī)定大写郝啤?

可以傳遞基本數(shù)據(jù)類型或者基本數(shù)據(jù)類型的集合艘蹋、String或CharSequence锄贼、實現(xiàn)序列化的對象。因為Bitmap實現(xiàn)了Parcelable接口女阀,所以intent是可以攜帶的宅荤,但是有大小的限制,大概是1m左右浸策。

為什么要規(guī)定大蟹爰?個人認為庸汗,intent傳輸其實本質(zhì)binder機制惫确,binder限制了大數(shù)據(jù)的傳輸。原因可能是太耗時夫晌,容易造成卡頓雕薪。

handler機制,為何主線程不會被阻塞晓淀?handler會造成內(nèi)存泄漏嗎所袁?會不會有喚醒機制?你怎么知道消息被放的隊列就是主線程的隊列凶掰?怎么保證的燥爷?looper標記的handler的線程信息蜈亩,誰要保證的looper的線程信息?threadLocal前翎,threadLcoal怎么保證的稚配? postdely原理,如何保證時間執(zhí)行的港华?

會造成內(nèi)存泄漏道川,因為該線程持有Handler的引用,Handler也持有Activity的引用立宜,GC回收不了冒萄。

解決辦法:使用static修飾handler;弱引用AC橙数;onDestroy中移除message

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尊流,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子灯帮,更是在濱河造成了極大的恐慌崖技,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钟哥,死亡現(xiàn)場離奇詭異迎献,居然都是意外死亡,警方通過查閱死者的電腦和手機腻贰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門忿晕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人银受,你說我怎么就攤上這事⊙徊桑” “怎么了宾巍?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長渔伯。 經(jīng)常有香客問我顶霞,道長,這世上最難降的妖魔是什么锣吼? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任选浑,我火速辦了婚禮,結(jié)果婚禮上玄叠,老公的妹妹穿的比我還像新娘古徒。我一直安慰自己,他們只是感情好读恃,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布隧膘。 她就那樣靜靜地躺著代态,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疹吃。 梳的紋絲不亂的頭發(fā)上蹦疑,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音萨驶,去河邊找鬼歉摧。 笑死,一個胖子當著我的面吹牛腔呜,可吹牛的內(nèi)容都是我干的叁温。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼育谬,長吁一口氣:“原來是場噩夢啊……” “哼券盅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起膛檀,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤锰镀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后咖刃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泳炉,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年嚎杨,在試婚紗的時候發(fā)現(xiàn)自己被綠了花鹅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡枫浙,死狀恐怖刨肃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情箩帚,我是刑警寧澤真友,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站紧帕,受9級特大地震影響盔然,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜是嗜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一愈案、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鹅搪,春花似錦站绪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掂僵。三九已至,卻和暖如春顷歌,著一層夾襖步出監(jiān)牢的瞬間锰蓬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工眯漩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芹扭,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓赦抖,卻偏偏與公主長得像舱卡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子队萤,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容