關(guān)于Android Activity的面試

Activity的定義

Activity 是一種包含用戶界面的組件,主要用于和用戶進(jìn)行交互。

Activity的生命周期

Activity的四種狀態(tài)

Running/Paused/Stopped/Killed

1. Running:?用戶可以點(diǎn)擊屏幕,且屏幕會做出相應(yīng)的反應(yīng),活動處于activity任務(wù)棧棧頂,是最不可能被回收的activity。

2. Paused:?活動失去焦點(diǎn)(被一個對話框、一個非全屏或透明的activity占據(jù)棧頂),導(dǎo)致當(dāng)前activity處于暫停狀態(tài),活動處于任可見狀態(tài),但已失去交互功能。當(dāng)系統(tǒng)內(nèi)存緊張時,才會回收這個狀態(tài)下的activity。

3. Stopped:?當(dāng)另一個活動完全覆蓋當(dāng)前活動,當(dāng)前活動不再處于棧頂,且不可見,則是處于Stopped,系統(tǒng)內(nèi)存較低時,才會回收這個狀態(tài)的活動。

4.Killed: Activity已被系統(tǒng)回收,activity的成員變量等信息已經(jīng)不存在了.

Activity的生命周期

onCreate()/onStart()/onResume()/onPaused()/onStop()/onDestroy()/onRestart()

(1) ?Activity啟動onCreate()-->onStart()-->onResume()

a. ? ? ?onCreate(): Activity被創(chuàng)建時回掉,是Activity第一個被調(diào)用的方法,在里面完成初始化,數(shù)據(jù)加載、圖片預(yù)加載等內(nèi)容。

b. ? ? onStart():此時Activity正在啟動,處于可見狀態(tài),但還不是前臺顯示,此時用戶還不能進(jìn)行點(diǎn)擊滑動等。

c. ? ? ?onResume():此時活動已處于運(yùn)行狀態(tài),用戶可以在屏幕進(jìn)行點(diǎn)擊、滑動等操作。

(2) ? 點(diǎn)擊Home鍵回到主界面(Activity不可見)-->onPause()-->onStop()

a. ? ? ?onPause():活動處于Paused狀態(tài),即活動仍然可見,但不能觸摸,對應(yīng)onResume()方法。

b. ? ? onStop():活動被停止或被完全覆蓋,不可見,處于Stopped狀態(tài)。當(dāng)系統(tǒng)內(nèi)存緊張時,活動有可能被回收。

(3) ? 再次回到原Activity-->onRestart()-->onStart()-->onResume()

a. ? ? ?onRestart():活動在由不可見變?yōu)榭梢姞顟B(tài)過程中被調(diào)用的方法。

(4) ? 退出當(dāng)前Activity-->onPause()-->onStop()-->onDestroy()

a. ? ? ?onDestroy():當(dāng)前活動正在被銷毀,生命周期的最后一個方法。在這個方法中完成一些回收及資源釋放。

Activity進(jìn)程優(yōu)先級

前臺/可見/服務(wù)/后臺/空

(1) ? 前臺進(jìn)程:處于與用戶交互的活動,或與前臺活動綁定的service。

(2) ? 可見進(jìn)程:一個可見卻不能交互的activity

(3) ? 服務(wù)進(jìn)程:在后臺開啟運(yùn)行的service

(4) ? 后臺進(jìn)程:在后臺運(yùn)行,不可見,不一定會被系統(tǒng)內(nèi)存回收的進(jìn)程。

(5) ? 空進(jìn)程:沒有活躍的組件,只是處于緩存目的而保留的進(jìn)程。

Activity啟動模式

Standard/ SingleTop/SingleTask/SingleInstance

(1) ? Standard(標(biāo)準(zhǔn)) :每次啟動一個activity,都會創(chuàng)建一個新的activity的實(shí)例,并將它加到任務(wù)棧中。不考慮是否已經(jīng)有這個activity的實(shí)例。

(2) ? SingleTop(棧頂復(fù)用):如果創(chuàng)建的activity,此時已經(jīng)處于棧頂,則會再次復(fù)用這個活動。

(3) ? SingleTask(棧內(nèi)復(fù)用):如果新創(chuàng)建的activity,已經(jīng)存在于當(dāng)前任務(wù)棧,則直接將這個activity置于棧頂,并將這個activity以上的全部活動都移出任務(wù)棧。

(4) ? SingleInstance(單實(shí)例):這個活動有且只有一個實(shí)例,擁有自己單獨(dú)的任務(wù)棧。

Scheme跳轉(zhuǎn)協(xié)議

? Android中的scheme是一種頁內(nèi)跳轉(zhuǎn)協(xié)議,是一種非常好的實(shí)現(xiàn)機(jī)制,通過定義自己的scheme協(xié)議,可以非常方便跳轉(zhuǎn)app中的各個頁面;通過scheme協(xié)議,服務(wù)器可以定制化告訴App跳轉(zhuǎn)到那個頁面,可以通過通知欄消息定制化跳轉(zhuǎn)頁面,可以通過H5頁面跳轉(zhuǎn)頁面等。

? 使用場景:1.服務(wù)端下發(fā)一個url, 客戶端根據(jù)url跳轉(zhuǎn)到相應(yīng)的appactivity. 2.在H5頁面中定義url,再打開App.? 3. App通過url跳到另一個App.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.什么是Activity?問的不太多,說點(diǎn)有深度的 四大組件之一,一般的,一個用戶交互界面對應(yīng)一個activit...
    JoonyLee閱讀 5,869評論 2 51
  • 為了面試,為了高工資,廢話不多說,不定期更新。 1. Activity正常和異常情況下的生命周期分析。 Activ...
    24K男閱讀 884評論 0 0
  • Activity 一、四種形態(tài) 運(yùn)行狀態(tài): 當(dāng) Activity 處于棧的頂層,可見,并可與用戶進(jìn)行交互 onRe...
    任教主來也閱讀 1,894評論 1 10
  • 你喜歡我嗎?喜歡我們就在一起;不喜歡我就追你,反正女追男過層紗,最后我們一定會在一起的。 昨晚和男神表白了,沒有明...
    辛木木閱讀 359評論 0 2
  • 京東《我們會做好自己,時間將證明一 切》,回應(yīng)馬云的“悲劇論”: 什么是大師? 大師就是你問他格局,他跟你說驕傲—...
    衛(wèi)莊lind閱讀 867評論 0 1

友情鏈接更多精彩內(nèi)容