Android 面試題總結(jié)之Activity 常見(jiàn)知識(shí)點(diǎn)

666.jpg
1优烧、什么是Activity

Android的四大組件之一蝉揍,context的子類,一個(gè)Activity通常展現(xiàn)為一個(gè)可視化的界面匙隔,是Android程序與用戶交互的窗口疑苫,也是Android組件中最基本也是最復(fù)雜的一個(gè)組件。從視覺(jué)效果來(lái)看纷责,一個(gè)Activity占據(jù)當(dāng)前的窗口,響應(yīng)所有窗口事件撼短,具備有控件再膳,菜單等界面元素。從內(nèi)部邏輯來(lái)看曲横,Activity需要為了保持各個(gè)界面狀態(tài)喂柒,需要做很多持久化的事情,還需要妥善管理生命周期禾嫉,和一些轉(zhuǎn)跳邏輯灾杰。

2、Activity的生命周期

Activity 從創(chuàng)建到銷毀有多種狀態(tài),從一種狀態(tài)到另一種狀態(tài)時(shí)會(huì)激發(fā)相應(yīng) 的回調(diào)方法,這些回調(diào)方法包括:onCreate onStart onResume onPause onStop onDestroy 熙参,如下圖所示:

  • onCreate Activity創(chuàng)建時(shí)的初始化工作 如設(shè)置頁(yè)面的ContentView艳吠,控件的初始化,接收參數(shù)等等孽椰。
  • onRestart Activity跳轉(zhuǎn)到其他頁(yè)面并執(zhí)行onStop之后昭娩,重新啟動(dòng)時(shí)會(huì)回調(diào)onRestart方法。
  • onStart Activity正在啟動(dòng)黍匾,即將開始栏渺,沒(méi)有出現(xiàn)在前臺(tái),還無(wú)法和用戶交互锐涯,可以理解為已經(jīng)初始化完成磕诊,但是處于后臺(tái)我們暫時(shí)沒(méi)法看見(jiàn)。
  • onResume Activity可見(jiàn)了并且處于前臺(tái)獲取到焦點(diǎn)(和onStart最大的不同就是onStart是在后臺(tái)已經(jīng)初始化完但是無(wú)法交互)。
  • onPause 失去焦點(diǎn)不可以交互霎终、處于后臺(tái)融痛。
  • onStop 即將停止,做一些稍微重量級(jí)回收類的工作
  • onDestory Activity即將被銷毀神僵,需要們做一些回收和資源釋放類的工作雁刷。
Activity的生命周期
3、后臺(tái)的activity被系統(tǒng)回收怎么辦保礼?如何在被系統(tǒng)回收之前保存當(dāng)前狀態(tài)沛励?

當(dāng)一個(gè)Activity被pause或者stop的時(shí)候,這個(gè)Activity的對(duì)象實(shí)際上還是保存在內(nèi)存中,因此當(dāng) activity 重新回到前臺(tái)之后這個(gè)Activity中的信息(成員和狀態(tài)信息)還可以重新獲取到.
如果系統(tǒng)為了整理內(nèi)存而銷毀了Activity對(duì)象時(shí),系統(tǒng)沒(méi)法簡(jiǎn)單的原封不動(dòng)地恢復(fù)先前的Activity對(duì)象及其狀態(tài)信息.
Activity中提供了一個(gè)方法:onSavedInstanceState(Bundle obj).當(dāng)系統(tǒng)銷毀一個(gè)Activity時(shí),會(huì)將Activity的狀態(tài)信息已鍵值對(duì)形式存放在bundle對(duì)象中.
第一次啟動(dòng)Activity時(shí),這個(gè)bundle對(duì)象是空的,null.如果Activity被系統(tǒng)銷毀了,然后用戶要回退回去看的話,系統(tǒng)會(huì)調(diào)用這個(gè)Activity的onCreate方法,并把bundle對(duì)象傳遞過(guò)去.

4、橫豎屏切換時(shí) Activity 的生命周期
  1. 不設(shè)置Activity的android:configChanges時(shí)炮障,切屏?xí)匦抡{(diào)用各個(gè)生命周期目派,切橫屏?xí)r會(huì)執(zhí)行一次,切豎屏?xí)r會(huì)執(zhí)行兩次
  2. 設(shè)置Activity的android:configChanges=”orientation”時(shí)胁赢,切屏還是會(huì)重新調(diào)用各個(gè)生命周期企蹭,切橫、豎屏?xí)r只會(huì)執(zhí)行一次
  3. 設(shè)置Activity的android:configChanges=”orientation|keyboardHidden”時(shí)智末,切屏不會(huì)重新調(diào)用各個(gè)生命周期谅摄,只會(huì)執(zhí)行onConfigurationChanged方法
5、如何將一個(gè) Activity 設(shè)置成窗口的樣式系馆?

只需要在AndroidManifest.xml給我們的 Activity 配置如下屬性即可送漠。
android:theme=”@android:style/Theme.Dialog”或者
android:theme="@style/Theme.AppCompat.Dialog"(根據(jù)api不同選擇)

6 、如何退出 Activity?如何安全退出已調(diào)用多個(gè) Activity 的 Application?

對(duì)于單一 Activity 的應(yīng)用來(lái)說(shuō)由蘑,退出很簡(jiǎn)單闽寡,直接 finish()即可,當(dāng)然尼酿,也可以用 killProcess()和 System.exit()這樣的方法爷狈,為了編程方便,最好定義一個(gè) Activity 基類裳擎,處理這些共通問(wèn)題涎永。

  1. 記錄打開的 Activity:每打開一個(gè) Activity,就記錄下來(lái)句惯。在需要退出時(shí)土辩,關(guān)閉每一個(gè) Activity 即可。
  2. 發(fā)送特定廣播:在需要結(jié)束應(yīng)用時(shí)抢野,發(fā)送一個(gè)特定的廣播拷淘,每個(gè) Activity 收到廣播后,關(guān)閉即可指孤。
7启涯、Activity 的四種啟動(dòng)模式,singletop 和 singletask 區(qū)別是什么?一般書簽的使用模式是 singletop,那為什么 不使用 singletask?
  1. standard: 標(biāo)準(zhǔn)模式贬堵,一調(diào)用 startActivity()方法就會(huì)產(chǎn)生一個(gè)新的實(shí)例。
  2. singleTop: 如果已經(jīng)有一個(gè)實(shí)例位于 Activity 棧的頂部時(shí)结洼, 就不產(chǎn)生新的實(shí)例黎做, 而只是調(diào)用Activity 中的 newInstance()方法。如果不位于棧頂松忍,會(huì)產(chǎn)生一個(gè)新的實(shí)例蒸殿。
  3. singleTask: 會(huì)在一個(gè)新的 task 中產(chǎn)生這個(gè)實(shí)例,以后每次調(diào)用都會(huì)使用這個(gè)鸣峭,不會(huì)去產(chǎn)生 新的實(shí)例了宏所。
  4. singleInstance: 這個(gè)跟 singleTask 基本上是一樣, 只有一個(gè)區(qū)別: 在這個(gè)模式下的 Activity實(shí)例所處的 task 中摊溶,只能有這個(gè) activity實(shí)例爬骤,不能有其他的實(shí)例。
8莫换、Android 中的 Context, Activity,Appliction 有什么區(qū)別?

1.Context 從字面上理解就是上下文的意思霞玄,在實(shí)際應(yīng)用中它也確實(shí)是起到了管理上下文環(huán)境中各個(gè)參數(shù)和變量的總用,方便我們可以簡(jiǎn)單的訪問(wèn)到各種資源拉岁。
2.Activity 和 Application 都是 Context 的子類坷剧。
3.Context 維護(hù)的是當(dāng)前的 Activity 的生命周期,Application 維護(hù)的是整個(gè)項(xiàng)目的生命周期膛薛。

9听隐、Android Service與Activity之間通信的幾種方式?
10哄啄、如果新Activity是透明主題時(shí),舊Activity會(huì)不會(huì)走onStop风范?

答:不會(huì)咨跌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市硼婿,隨后出現(xiàn)的幾起案子锌半,更是在濱河造成了極大的恐慌,老刑警劉巖寇漫,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刊殉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡州胳,警方通過(guò)查閱死者的電腦和手機(jī)记焊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)栓撞,“玉大人遍膜,你說(shuō)我怎么就攤上這事碗硬。” “怎么了瓢颅?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵恩尾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我挽懦,道長(zhǎng)翰意,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任信柿,我火速辦了婚禮冀偶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘角塑。我一直安慰自己蔫磨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布圃伶。 她就那樣靜靜地躺著堤如,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窒朋。 梳的紋絲不亂的頭發(fā)上搀罢,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音侥猩,去河邊找鬼榔至。 笑死,一個(gè)胖子當(dāng)著我的面吹牛欺劳,可吹牛的內(nèi)容都是我干的唧取。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼划提,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼枫弟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起鹏往,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤淡诗,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后伊履,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體韩容,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年唐瀑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了群凶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡介褥,死狀恐怖座掘,靈堂內(nèi)的尸體忽然破棺而出递惋,到底是詐尸還是另有隱情,我是刑警寧澤溢陪,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布萍虽,位于F島的核電站,受9級(jí)特大地震影響形真,放射性物質(zhì)發(fā)生泄漏杉编。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一咆霜、第九天 我趴在偏房一處隱蔽的房頂上張望邓馒。 院中可真熱鬧,春花似錦蛾坯、人聲如沸光酣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)救军。三九已至,卻和暖如春倘零,著一層夾襖步出監(jiān)牢的瞬間唱遭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工呈驶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拷泽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓袖瞻,卻偏偏與公主長(zhǎng)得像司致,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子聋迎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355