- 相關(guān)推薦
android面試題(7)
比如,啟動(dòng)一個(gè)瀏覽器,在Android中是一個(gè)比較沉重的過(guò)程,它需要做很多初始化的工作,并且會(huì)有不小的內(nèi)存開(kāi)銷。但與此同時(shí),用瀏覽器打開(kāi)一些內(nèi)容,又是一般應(yīng)用都會(huì)有的一個(gè)需求。設(shè)想一下,如果同時(shí)有十個(gè)運(yùn)行著的應(yīng)用(就會(huì)對(duì)應(yīng)著是多個(gè)Task),都需要啟動(dòng)瀏覽器,這將是一個(gè)多么殘酷的場(chǎng)面,十個(gè)Task棧都堆積著很雷同的瀏覽器Activity,
是多么華麗的一種浪費(fèi)啊。
于是你會(huì)有這樣一種設(shè)想,瀏覽器Activity,可不可以作為一個(gè)單獨(dú)的Task而存在,不管是來(lái)自那個(gè)Task的請(qǐng)求,瀏覽器的Task,都不會(huì)歸并過(guò)去。這樣,雖然瀏覽器Activity本身需要維系的狀態(tài)更多了,但整體的開(kāi)銷將大大的減少,這種舍小家為大家的行為,還是很值得歌頌的
standard", "singleTop", "singleTask", "singleInstance"。
standard模式, 是默認(rèn)的也是標(biāo)準(zhǔn)的Task模式,在沒(méi)有其他因素的影響下,使用此模式的Activity,會(huì)構(gòu)造一個(gè)Activity的實(shí)例,加入到調(diào)用者的Task棧中去,對(duì)于使用頻度一般開(kāi)銷一般什么都一般的Activity而言,standard模式無(wú)疑是最合適的,因?yàn)樗壿嫼?jiǎn)單條理清晰,所以是默認(rèn)的選擇。
而singleTop模式,基本上于standard一致,僅在請(qǐng)求的Activity正好位于棧頂時(shí),有所區(qū)別。此時(shí),配置成singleTop的Activity,不再會(huì)構(gòu)造新的實(shí)例加入到Task棧中,而是將新來(lái)的Intent發(fā)送到棧頂Activity中,棧頂?shù)腁ctivity可以通過(guò)重載onNewIntent來(lái)處理新的Intent(當(dāng)然,也可以無(wú)視...)。這個(gè)模式,降低了位于棧頂時(shí)的一些重復(fù)開(kāi)銷,更避免了一些奇異的行為(想象一下,如果在棧頂連續(xù)幾個(gè)都是同樣的Activity,再一級(jí)級(jí)退出的時(shí)候,這是怎么樣的用戶體驗(yàn)...),很適合一些會(huì)有更新的列表Activity展示。一個(gè)活生生的實(shí)例是,在Android默認(rèn)提供的應(yīng)用中,瀏覽器(Browser)的書簽Activity(BrowserBookmarkPage),就用的是singleTop。
singleTask,和singleInstance,則都采取的另辟Task的蹊徑。
標(biāo)志為singleTask的Activity,最多僅有一個(gè)實(shí)例存在,并且,位于以它為根的Task中。所有對(duì)該Activity的請(qǐng)求,都會(huì)跳到該Activity的Task中展開(kāi)進(jìn)行。singleTask,很象概念中的單件模式,所有的修改都是基于一個(gè)實(shí)例,這通常用在構(gòu)造成本很大,但切換成本較小的Activity中。最典型的例子,還是瀏覽器應(yīng)用的主Activity(名為Browser...),它是展示當(dāng)前tab,當(dāng)前頁(yè)面內(nèi)容的窗口。它的構(gòu)造成本大,但頁(yè)面的切換還是較快的,于singleTask相配,還是挺天作之合的。
singleInstance顯得更為極端一些。在大部分時(shí)候singleInstance與singleTask完全一致,唯一的不同在于,singleInstance的Activity,是它所在棧中僅有的一個(gè)Activity,如果涉及到的其他Activity,都移交到其他Task中進(jìn)行。這使得singleInstance的Activity,像一座孤島,徹底的黑盒,它不關(guān)注請(qǐng)求來(lái)自何方,也不計(jì)較后續(xù)由誰(shuí)執(zhí)行。在Android默認(rèn)的各個(gè)應(yīng)用中,很少有這樣的Activity,在我個(gè)人的工程實(shí)踐中,曾嘗試在有道詞典的快速取詞Activity中采用過(guò),
是因?yàn)槲矣X(jué)得快速取詞入口足夠方便(從notification中點(diǎn)選進(jìn)入),并且會(huì)在各個(gè)場(chǎng)合使用,應(yīng)該做得完全獨(dú)立。
大的apk 拆成 很多小的apk
●Activity的 android:taskAffinity=""屬性 姻緣關(guān)系
1.配置后 當(dāng)啟動(dòng)這個(gè)activity時(shí)就先去找有沒(méi)有activity的親和力屬性相同 有就加入這個(gè)
activity所在的任務(wù)中沒(méi)有就新開(kāi)任務(wù)
2.affinity起作用需要的條件而者具備一個(gè):
1.intent包含F(xiàn)LAG_ACTIVITY_NEW_TASK標(biāo)記
2.activity元素啟用了allowTaskReparenting屬性.
43. 在Android中,怎么節(jié)省內(nèi)存的使用,怎么主動(dòng)回收內(nèi)存?
回收已經(jīng)使用的資源,
合理的使用緩存
合理設(shè)置變量的作用范圍… application 對(duì)象
//未來(lái)的某一段時(shí)間執(zhí)行
System.gc();
44. 不同工程中的方法是否可以相互調(diào)用?
可以,列舉aidl訪問(wèn)遠(yuǎn)程服務(wù)的例子.
45. 在Android中是如何實(shí)現(xiàn)判斷區(qū)分電話的狀態(tài),去電,來(lái)電、未接來(lái)電?
Day8 showAddressService.java
46. dvm的進(jìn)程和Linux的進(jìn)程, 應(yīng)用程序的進(jìn)程是否為同一個(gè)概念
Dvm的進(jìn)程是dalivk虛擬機(jī)進(jìn)程,每個(gè)android程序都運(yùn)行在自己的進(jìn)程里面,
每個(gè)android程序系統(tǒng)都會(huì)給他分配一個(gè)單獨(dú)的liunx uid(user id),
每個(gè)dvm都是linux里面的一個(gè)進(jìn)程.所以說(shuō)這兩個(gè)進(jìn)程是一個(gè)進(jìn)程.
47. sim卡的EF 文件有何作用
Sim卡相關(guān)的東西,沒(méi)接觸過(guò)
48. 如何判斷是否有SD卡?
配置文件中有sd卡的權(quán)限, 通過(guò)environment的靜態(tài)方法,
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
49. 嵌入式操作系統(tǒng)內(nèi)存管理有哪幾種, 各有何特性。
頁(yè)式,段式,段頁(yè),等 …
50. 什么是嵌入式實(shí)時(shí)操作系統(tǒng), Android 操作系統(tǒng)屬于實(shí)時(shí)操作系統(tǒng)嗎?
實(shí)時(shí)操作系統(tǒng)是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時(shí),能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定的時(shí)間之內(nèi)來(lái)控制生產(chǎn)過(guò)程或?qū)μ幚硐到y(tǒng)作出快速響應(yīng),并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致運(yùn)行的嵌入式操作系統(tǒng)。主要用于工業(yè)控制、軍事設(shè)備、航空航天等領(lǐng)域?qū)ο到y(tǒng)的響應(yīng)時(shí)間有苛刻的要求,這就需要使用實(shí)時(shí)系統(tǒng)。又可分為軟實(shí)時(shí)和硬實(shí)時(shí)兩種,而android是基于linux內(nèi)核的,因此屬于軟實(shí)時(shí)。
硬實(shí)時(shí). 火星探測(cè)車.
軟實(shí)時(shí).
51. 一條最長(zhǎng)的短信息約占多少byte?
中文70(包括標(biāo)點(diǎn)),英文160,160個(gè)字節(jié) 這個(gè)說(shuō)法不準(zhǔn)確,
要跟手機(jī)制式運(yùn)營(yíng)商等信息有關(guān).
做實(shí)驗(yàn),看源碼
ArrayList msgs = sms.divideMessage(message);
for (String msg : msgs) {
【android面試題(7)】相關(guān)文章:
android面試題目09-08
Android工程師的面試題08-07
Android工程師面試題10-24
Microsoft面試題09-04
iOS面試題07-10
公司面試題09-12
hibernate面試題10-18
英語(yǔ)面試題精選06-13
小升初面試題06-10