Android面試整里大全_第1頁
Android面試整里大全_第2頁
Android面試整里大全_第3頁
Android面試整里大全_第4頁
Android面試整里大全_第5頁
已閱讀5頁,還剩80頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、Andrroidd的四大大組件是是哪些,它它們的作作用?答:Acctivvityy:Acctivvityy是Anndrooid程程序與用用戶交互互的窗口口,是AAndrroidd構造塊塊中最基基本的一一種,它它需要為為保持各各界面的的狀態(tài),做做很多持持久化的的事情,妥妥善管理理生命周周期以及及一些跳跳轉邏輯輯servvicee:后臺臺服務于于Acttiviity,封封裝有一一個完整整的功能能邏輯實實現(xiàn),接接受上層層指令,完完成相關關的事物物,定義義好需要要接受的的Inttentt提供同同步和異異步的接接口Conttentt Prroviiderr:是AAndrroidd提供的的第三方方應用數(shù)數(shù)

2、據(jù)的訪訪問方案案,可以以派生CConttentt Prroviiderr類,對對外提供供數(shù)據(jù),可可以像數(shù)數(shù)據(jù)庫一一樣進行行選擇排排序,屏屏蔽內(nèi)部部數(shù)據(jù)的的存儲細細節(jié),向向外提供供統(tǒng)一的的接口模模型,大大大簡化化上層應應用,對對數(shù)據(jù)的的整合提提供了更更方便的的途徑BroaadCaast Recceivver:接受一一種或者者多種IInteent作作觸發(fā)事事件,接接受相關關消息,做做一些簡簡單處理理,轉換換成一條條Nottifiicattionn,統(tǒng)一一了Anndrooid的的事件廣廣播模型型請介紹下下Anddroiid中常常用的五五種布局局。常用五種種布局方方式,分分別是:FraameLLayo

3、out(框框架布局局),LLineearLLayoout (線性性布局),AAbsoolutteLaayouut(絕絕對布局局),RRelaativveLaayouut(相相對布局局),TTablleLaayouut(表表格布局局)。一、FrrameeLayyoutt:所有有東西依依次都放放在左上上角,會會重疊,這這個布局局比較簡簡單,也也只能放放一點比比較簡單單的東西西。二、LinnearrLayyoutt:線性性布局,每每一個LLineearLLayoout里里面又可可分為垂垂直布局局(anndrooid:oriienttatiion=veertiicall)和和水平布布局(aandrro

4、idd:orrienntattionn=hhoriizonntall )。當垂直直布局時時,每一一行就只只有一個個元素,多多個元素素依次垂垂直往下下;水平平布局時時,只有有一行,每每一個元元素依次次向右排排列。三三、AbbsolluteeLayyoutt:絕對對布局用用X,YY坐標來來指定元元素的位位置,這這種布局局方式也也比較簡簡單,但但是在屏屏幕旋轉轉時,往往往會出出問題,而而且多個個元素的的時候,計計算比較較麻煩。四、RRelaativveLaayouut:相相對布局局可以理理解為某某一個元元素為參參照物,來來定位的的布局方方式。主主要屬性性有:相相對于某某一個元元素anndrooid:

5、layyoutt_beeloww、 anndrooid:layyoutt_tooLefftOff相對于于父元素素的地方方anddroiid:llayoout_aliignPPareentLLeftt、anndrooid:layyoutt_allignnParrenttRiggh;五五、TaableeLayyoutt:表格格布局,每每一個TTablleLaayouut里面面有表格格行TaableeRoww,TaableeRoww里面可可以具體體定義每每一個元元素。每每一個布布局都有有自己適適合的方方式,這這五個布布局元素素可以相相互嵌套套應用,做做出美觀觀的界面面。andrroidd中的動動畫有

6、哪哪幾類,它它們的特特點和區(qū)區(qū)別是什什么答:兩種種,一種種是Twweenn動畫、還有一一種是FFramme動畫畫。Twweenn動畫,這這種實現(xiàn)現(xiàn)方式可可以使視視圖組件件移動、放大、縮小以以及產(chǎn)生生透明度度的變化化;另一一種Frramee動畫,傳傳統(tǒng)的動動畫方法法,通過過順序的的播放排排列好的的圖片來來實現(xiàn),類類似電影影。andrroidd 中有有哪幾種種解析xxml的的類?官官方推薦薦哪種?以及它它們的原原理和區(qū)區(qū)別。答:XMML解析析主要有有三種方方式,SSAX、DOMM、PUULL。常規(guī)在在PC上上開發(fā)我我們使用用Domm相對輕輕松些,但但一些性性能敏感感的數(shù)據(jù)據(jù)庫或手手機上還還是主要要

7、采用SSAX方方式,SSAX讀讀取是單單向的,優(yōu)優(yōu)點:不不占內(nèi)存存空間、解析屬屬性方便便,但缺缺點就是是對于套套嵌多個個分支來來說處理理不是很很方便。而DOOM方式式會把整整個XMML文件件加載到到內(nèi)存中中去,該該方法在在查找方方面可以以和XPPathh很好的的結合如如果數(shù)據(jù)據(jù)量不是是很大推推薦使用用,而PPULLL常常用用在J22ME對對于節(jié)點點處理比比較好,類類似SAAX方式式,同樣樣很節(jié)省省內(nèi)存,在在J2MME中我我們經(jīng)常常使用的的KXMML庫來來解析。ListtVieew的優(yōu)優(yōu)化方案案答:1、如果自自定義適適配器,那那么在ggetVVieww方法中中要考慮慮方法傳傳進來的的參數(shù)ccon

8、ttenttVieew是否否為nuull,如如果為nnulll就創(chuàng)建建conntenntViiew并并返回,如如果不為為nulll則直直接使用用。在這這個方法法中盡可可能少創(chuàng)創(chuàng)建viiew。2、給cconttenttVieew設置置tagg(seetTaag(),傳傳入一個個vieewHooldeer對象象,用于于緩存要要顯示的的數(shù)據(jù),可可以達到到圖像數(shù)數(shù)據(jù)異步步加載的的效果。3、如果果lisstviiew需需要顯示示的ittem很很多,就就要考慮慮分頁加加載。比比如一共共要顯示示1000條或者者更多的的時候,我我們可以以考慮先先加載220條,等等用戶拉拉到列表表底部的的時候再再去加載載接下來

9、來的200條。請介紹下下Anddroiid的數(shù)數(shù)據(jù)存儲儲方式。答:使用用ShaareddPreeferrencces存存儲數(shù)據(jù)據(jù);文件件存儲數(shù)數(shù)據(jù);SSQLiite數(shù)數(shù)據(jù)庫存存儲數(shù)據(jù)據(jù);使用用ConntenntPrroviiderr存儲數(shù)數(shù)據(jù);網(wǎng)網(wǎng)絡存儲儲數(shù)據(jù);Preffereencee,F(xiàn)iile, DattaBaase這這三種方方式分別別對應的的目錄是是/daata/datta/PPackkagee Naame/Shaaredd_Prref, /ddataa/daata/Pacckagge NNamee/fiiless, /datta/ddataa/Paackaage Namme/ddat

10、aabasse 。一:使用用ShaareddPreeferrencces存存儲數(shù)據(jù)據(jù)首先說明明ShaareddPreeferrencces存存儲方式式,它是是 Anndrooid提提供的用用來存儲儲一些簡簡單配置置信息的的一種機機制,例例如:登登錄用戶戶的用戶戶名與密密碼。其其采用了了Mapp數(shù)據(jù)結結構來存存儲數(shù)據(jù)據(jù),以鍵鍵值的方方式存儲儲,可以以簡單的的讀取與與寫入,具具體實例例如下:voidd ReeadSSharredPPreffereencees()Striing strrNamme,sstrPPasssworrd;SharredPPreffereencees usser = gget

11、SSharredPPreffereencees(“uuserr_innfo”,0);strNNamee = useer.ggetSStriing(“NAAME”,”);strPPasssworrd = usser gettStrringg(“PPASSSWORRD”,”);voidd WrriteeShaareddPreeferrencces(Strringg sttrNaame,Strringg sttrPaasswwordd)SharredPPreffereencees usser = ggetSSharredPPreffereencees(“uuserr_innfo”,0);uer.ed

12、iit();userr.puutSttrinng(“NNAMEE”, strrNamme);userr.puutSttrinng(“PPASSSWORRD” ,sttrPaasswwordd);userrxmiit();數(shù)據(jù)讀取取與寫入入的方法法都非常常簡單,只只是在寫寫入的時時候有些些區(qū)別:先調用用ediit()使其處處于編輯輯狀態(tài),然然后才能能修改數(shù)數(shù)據(jù),最最后使用用commmitt()提提交修改改的數(shù)據(jù)據(jù)。實際際上ShhareedPrrefeerenncess是采用用了XMML格式式將數(shù)據(jù)據(jù)存儲到到設備中中,在DDDMSS中的FFilee Exxploorerr中的/datta/ddat

13、aa/shharees_ppreffs下。使用SSharredPPreffereencees是有有些限制制的:只只能在同同一個包包內(nèi)使用用,不能能在不同同的包之之間使用用。二:文件件存儲數(shù)數(shù)據(jù)文件存儲儲方式是是一種較較常用的的方法,在在Anddroiid中讀讀取/寫寫入文件件的方法法,與 Javva中實實現(xiàn)I/O的程程序是完完全一樣樣的,提提供了oopennFilleInnputt()和和opeenFiileOOutpput()方法法來讀取取設備上上的文件件。具體體實例如如下:Striing fn = “mmoanndrooid.logg”;FileeInpputSStreeam fiss =

14、 opeenFiileIInpuut(ffn);FileeOuttputtStrreamm foos = oppenFFileeOuttputt(fnn,Coonteext.MODDE_PPRIVVATEE);三:網(wǎng)絡絡存儲數(shù)數(shù)據(jù)網(wǎng)絡存儲儲方式,需需要與AAndrroidd 網(wǎng)絡絡數(shù)據(jù)包包打交道道,關于于Anddroiid 網(wǎng)網(wǎng)絡數(shù)據(jù)據(jù)包的詳詳細說明明,請閱閱讀Anndrooid SDKK引用了了Javva SSDK的的哪些ppackkagee?。四:CoonteentPProvvideer1、CoonteentPProvvideer簡介介當應用繼繼承CoonteentPProvvideer類

15、,并并重寫該該類用于于提供數(shù)數(shù)據(jù)和存存儲數(shù)據(jù)據(jù)的方法法,就可可以向其其他應用用共享其其數(shù)據(jù)。雖然使使用其他他方法也也可以對對外共享享數(shù)據(jù),但但數(shù)據(jù)訪訪問方式式會因數(shù)數(shù)據(jù)存儲儲的方式式而不同同,如:采用文文件方式式對外共共享數(shù)據(jù)據(jù),需要要進行文文件操作作讀寫數(shù)數(shù)據(jù);采采用shhareedprrefeerenncess共享數(shù)數(shù)據(jù),需需要使用用shaareddpreeferrencces APII讀寫數(shù)數(shù)據(jù)。而而使用CConttenttProovidder共共享數(shù)據(jù)據(jù)的好處處是統(tǒng)一一了數(shù)據(jù)據(jù)訪問方方式。2、Urri類簡簡介Uri代代表了要要操作的的數(shù)據(jù),UUri主主要包含含了兩部部分信息息:1.需要

16、操操作的CConttenttProovidder ,2.對CoonteentPProvvideer中的的什么數(shù)數(shù)據(jù)進行行操作,一一個Urri由以以下幾部部分組成成:1.scchemme:CConttenttProovidder(內(nèi)內(nèi)容提供供者)的的schhemee已經(jīng)由由Anddroiid所規(guī)規(guī)定為:conntennt:/2.主機機名(或或Autthorrityy):用用于唯一一標識這這個CoonteentPProvvideer,外外部調用用者可以以根據(jù)這這個標識識來找到到它。3.路徑徑(paath):可以用用來表示示我們要要操作的的數(shù)據(jù),路路徑的構構建應根根據(jù)業(yè)務務而定,如如下:要操作cco

17、nttactt表中iid為110的記記錄,可可以構建建這樣的的路徑:/coontaact/10要操作cconttactt表中iid為110的記記錄的nnamee字段, conntacct/110/nnamee要操作cconttactt表中的的所有記記錄,可可以構建建這樣的的路徑:/coontaact?要操作的的數(shù)據(jù)不不一定來來自數(shù)據(jù)據(jù)庫,也也可以是是文件等等他存儲儲方式,如如下:要操作xxml文文件中cconttactt節(jié)點下下的naame節(jié)節(jié)點,可可以構建建這樣的的路徑:/coontaact/namme如果要把把一個字字符串轉轉換成UUri,可可以使用用Urii類中的的parrse()方法法

18、,如下下:Uri urii = Urii.paarsee(cconttentt:/ovidder.conntacctprroviiderr/coontaact)3、UrriMaatchher、ConntenntUrristt和CoonteentRResoolveer簡介介因為Urri代表表了要操操作的數(shù)數(shù)據(jù),所所以我們們很經(jīng)常常需要解解析Urri,并并從 UUri中中獲取數(shù)數(shù)據(jù)。AAndrroidd系統(tǒng)提提供了兩兩個用于于操作UUri的的工具類類,分別別為UrriMaatchher 和CoonteentUUriss 。掌掌握它們們的使用用,會便便于我

19、們們的開發(fā)發(fā)工作。UriMMatccherr:用于于匹配UUri,它它的用法法如下:1.首先先把你需需要匹配配Urii路徑全全部給注注冊上,如如下:/常量量UriiMattcheer.NNO_MMATCCH表示示不匹配配任何路路徑的返返回碼(-1)。UriMMatccherr urriMaatchher = nnew UriiMattcheer(UUriMMatccherr.NOO_MAATCHH);/如果果mattch()方法法匹配cconttentt:/comm.chhanggcheeng.sqllitee.prroviiderr.coontaactpprovvideer /conntac

20、ct路徑徑,返回回匹配碼碼為1uriMMatccherr.adddURRI(“comm.chhanggcheeng.sqllitee.prroviiderr.coontaactpprovvideer”, “conntacct”, 11);/添加加需要匹匹配urri,如如果匹配配就會返返回匹配配碼/如果果mattch()方法法匹配 conntennt:/coom.cchanngchhengg.sqqlitte.pprovvideer.cconttacttproovidder/conntacct/2230路路徑,返返回匹配配碼為22uriMMatccherr.adddURRI(“comm.chha

21、nggcheeng.sqllitee.prroviiderr.coontaactpprovvideer”, “conntacct/#”, 22);/#號號為通配配符2.注冊冊完需要要匹配的的Urii后,就就可以使使用urriMaatchher.mattch(urii)方法法對輸入入的Urri進行行匹配,如如果匹配配就返回回匹配碼碼,匹配配碼是調調用 aaddUURI()方法法傳入的的第三個個參數(shù),假假設匹配配 coonteent:/ovidder.conntacctprroviiderr/coontaact路路徑,返返回的匹匹配碼為

22、為1。ConttenttUriis:用用于獲取取Urii路徑后后面的IID部分分,它有有兩個比比較實用用的方法法:withhApppenddedIId(uuri, idd)用于于為路徑徑加上IID部分分parsseIdd(urri)方方法用于于從路徑徑中獲取取ID部部分ConttenttRessolvver:當外部部應用需需要對CConttenttProovidder中中的數(shù)據(jù)據(jù)進行添添加、刪刪除、修修改和查查詢操作作時,可可以使用用 CoonteentRResoolveer 類類來完成成,要獲獲取CoonteentRResoolveer 對對象,可可以使用用Acttiviity提提供的gge

23、tCConttenttRessolvver()方法法。 CConttenttRessolvver使使用innserrt、ddeleete、upddatee、quueryy方法,來來操作數(shù)數(shù)據(jù)。actiivitty的啟啟動模式式有哪些些?是什什么含義義?答:在aandrroidd里,有有4種aactiivitty的啟啟動模式式,分別別為: “staandaard” (默默認) “sinngleeTopp” “sinngleeTassk” “sinngleeInsstannce”它們主要要有如下下不同:1. 如如何決定定所屬ttaskk “staandaard”和”sinngleeTopp”的ac

24、ctivvityy的目標標tassk,和和收到的的Inttentt的發(fā)送送者在同同一個ttaskk內(nèi),除除非inntennt包括括參數(shù)FFLAGG_ACCTIVVITYY_NEEW_TTASKK。 如果提供供了FLLAG_ACTTIVIITY_NEWW_TAASK參參數(shù),會會啟動到到別的ttaskk里。 “sinngleeTassk”和”sinngleeInsstannce”總是把把acttiviity作作為一個個tassk的根根元素,他他們不會會被啟動動到一個個其他ttaskk里。2. 是是否允許許多個實實例 “staandaard”和”sinngleeTopp”可以被被實例化化多次,并并且

25、存在在于不同同的taask中中,且一一個taask可可以包括括一個aactiivitty的多多個實例例; “sinngleeTassk”和”sinngleeInsstannce”則限制制只生成成一個實實例,并并且是ttaskk的根元元素。 sinngleeTopp要求如如果創(chuàng)建建inttentt的時候候棧頂已已經(jīng)有要要創(chuàng)建 的Acctivvityy的實例例,則將將inttentt發(fā)送給給該實例例,而不不發(fā)送給給新的實實例。3. 是是否允許許其它aactiivitty存在在于本ttaskk內(nèi)“sinngleeInsstannce”獨占一一個taask,其其它acctivvityy不能存存在那個個

26、tassk里;如果它它啟動了了一個新新的acctivvityy,不管管新的aactiivitty的llaunnch modde 如如何,新新的acctivvityy都將會會到別的的tassk里運運行(如如同加了了FLAAG_AACTIIVITTY_NNEW_TASSK參數(shù)數(shù))。 而另外三三種模式式,則可可以和其其它acctivvityy共存。4. 是是否每次次都生成成新實例例 “staandaard”對于沒沒一個啟啟動Inntennt都會會生成一一個acctivvityy的新實實例; “sinngleeTopp”的acctivvityy如果在在tassk的棧棧頂?shù)脑捲?,則不不生成新新的該aac

27、tiivitty的實實例,直直接使用用棧頂?shù)牡膶嵗?,否否則,生生成該aactiivitty的實實例。 比如現(xiàn)在在tassk棧元元素為AA-B-C-DD(D在在棧頂),這這時候給給D發(fā)一一個啟動動inttentt,如果果D是 “staandaard”的,則則生成DD的一個個新實例例,棧變變?yōu)锳BCCDD。 如果D是是sinngleeTopp的話,則則不會生生產(chǎn)D的的新實例例,棧狀狀態(tài)仍為為A-BB-C-D 如果這時時候給BB發(fā)Inntennt的話話,不管管B的llaunnchmmodee是”staandaard” 還是是 “sinngleeTopp” ,都都會生成成B的新新實例,棧棧狀態(tài)變變?yōu)锳

28、-B-CC-D-B?!皊inngleeInsstannce”是其所所在棧的的唯一aactiivitty,它它會每次次都被重重用。“sinngleeTassk”如果在在棧頂,則則接受iinteent,否否則,該該inttentt會被丟丟棄,但但是該ttaskk仍會回回到前臺臺。當已經(jīng)存存在的aactiivitty實例例處理新新的inntennt時候候,會調調用onnNewwInttentt()方方法 如如果收到到inttentt生成一一個acctivvityy實例,那那么用戶戶可以通通過baack鍵鍵回到上上一個狀狀態(tài);如如果是已已經(jīng)存在在的一個個acttiviity來來處理這這個inntenn

29、t的話話,用戶戶不能通通過按bbackk鍵返回回到這之之前的狀狀態(tài)。跟acttiviity和和Tassk 有有關的 Inttentt啟動方方式有哪哪些?其其含義?核心的IInteent Flaag有: FLAGG_ACCTIVVITYY_NEEW_TTASKK FLAGG_ACCTIVVITYY_CLLEARR_TOOP FLAGG_ACCTIVVITYY_REESETT_TAASK_IF_NEEEDEDD FLAGG_ACCTIVVITYY_SIINGLLE_TTOPFLAGG_ACCTIVVITYY_NEEW_TTASKK 如果設置置,這個個Acttiviity會會成為歷歷史sttackk

30、中一個個新Taask的的開始。一個TTaskk(從啟啟動它的的Acttiviity到到下一個個Tassk中的的 Acctivvityy)定義義了用戶戶可以遷遷移的AActiivitty原子子組。TTaskk可以移移動到前前臺和后后臺;在在某個特特定Taask中中的所有有Acttiviity總總是保持持相同的的次序。 這個個標志一一般用于于呈現(xiàn)“啟動”類型的的行為:它們提提供用戶戶一系列列可以單單獨完成成的事情情,與啟啟動它們們的Acctivvityy完全無無關。 使用用這個標標志,如如果正在在啟動的的Acttiviity的的Tassk已經(jīng)經(jīng)在運行行的話,那那么,新新的Acctivvityy將不

31、會會啟動;代替的的,當前前Tassk會簡簡單的移移入前臺臺。參考考FLAAG_AACTIIVITTY_MMULTTIPLLE_TTASKK標志,可可以禁用用這一行行為。 這個個標志不不能用于于調用方方對已經(jīng)經(jīng)啟動的的Acttiviity請請求結果果。FLAGG_ACCTIVVITYY_CLLEARR_TOOP如果設設置,并并且這個個Acttiviity已已經(jīng)在當當前的TTaskk中運行行,因此此,不再再是重新新啟動一一個這個個Acttiviity的的實例,而而是在這這個Acctivvityy上方的的所有AActiivitty都將將關閉,然然后這個個Inttentt會作為為一個新新的Innten

32、nt投遞遞到老的的Acttiviity(現(xiàn)現(xiàn)在位于于頂端)中中。 例如如,假設設一個TTaskk中包含含這些AActiivitty:AA,B,CC,D。如果DD調用了了staartAActiivitty(),并且且包含一一個指向向Acttiviity B的IInteent,那那么,CC和D都都將結束束,然后后B接收收到這個個Inttentt,因此此,目前前staack的的狀況是是:A,BB。 上例例中正在在運行的的Acttiviity B既可可以在oonNeewInntennt()中接收收到這個個新的IInteent,也也可以把把自己關關閉然后后重新啟啟動來接接收這個個Inttentt。如果果

33、它的啟啟動模式式聲明為為 “mmulttiplle”(默認值值),并并且你沒沒有在這這個Inntennt中設設置FLLAG_ACTTIVIITY_SINNGLEE_TOOP標志志,那么么它將關關閉然后后重新創(chuàng)創(chuàng)建;對對于其它它的啟動動模式,或或者在這這個Inntennt中設設置FLLAG_ACTTIVIITY_SINNGLEE_TOOP標志志,都將將把這個個Inttentt投遞到到當前這這個實例例的onnNewwInttentt()中中。 這個個啟動模模式還可可以與FFLAGG_ACCTIVVITYY_NEEW_TTASKK結合起起來使用用:用于于啟動一一個Taask中中的根AActiivit

34、ty,它它會把那那個Taask中中任何運運行的實實例帶入入前臺,然然后清除除它直到到根Acctivvityy。這非非常有用用,例如如,當從從Nottifiicattionn Maanagger處處啟動一一個Acctivvityy。 FLAGG_ACCTIVVITYY_REESETT_TAASK_IF_NEEEDEDD 如果設設置這個個標志,這這個acctivvityy不管是是從一個個新的棧棧啟動還還是從已已有棧推推到棧頂頂,它都都將以tthe froont dooor oof tthe tassk的方方式啟動動。這就就講導致致任何與與應用相相關的棧棧都講重重置到正正常狀態(tài)態(tài)(不管管是正在在講a

35、cctivvityy移入還還是移除除),如如果需要要,或者者直接重重置該棧棧為初始始狀態(tài)。FLAGG_ACCTIVVITYY_SIINGLLE_TTOP 如如果設置置,當這這個Acctivvityy位于歷歷史sttackk的頂端端運行時時,不再再啟動一一個新的的FLAGG_ACCTIVVITYY_BRROUGGHT_TO_FROONT 這這個標志志一般不不是由程程序代碼碼設置的的,如在在lauunchhModde中設設置siinglleTaask模模式時系系統(tǒng)幫你你設定。 FLAGG_ACCTIVVITYY_CLLEARR_WHHEN_TASSK_RRESEET如果設設置,這這將在TTaskk

36、的Acctivvityy sttackk中設置置一個還還原點,當當Tassk恢復復時,需需要清理理Acttiviity。也就是是說,下下一次TTaskk帶著 FLAAG_AACTIIVITTY_RRESEET_TTASKK_IFF_NEEEDEED標記記進入前前臺時(典典型的操操作是用用戶在主主畫面重重啟它),這這個Acctivvityy和它之之上的都都將關閉閉,以至至于用戶戶不能再再返回到到它們,但但是可以以回到之之前的AActiivitty。 這這在你的的程序有有分割點點的時候候很有用用。例如如,一個個e-mmaill應用程程序可能能有一個個操作是是查看一一個附件件,需要要啟動圖圖片瀏覽覽

37、Acttiviity來來顯示。這個 Acttiviity應應該作為為e-mmaill應用程程序Taask的的一部分分,因為為這是用用戶在這這個Taask中中觸發(fā)的的操作。然而,當當用戶離離開這個個Tassk,然然后從主主畫面選選擇e-maiil aapp,我我們可能能希望回回到查看看的會話話中,但但不是查查看圖片片附件,因因為這讓讓人困惑惑。通過過在啟動動圖片瀏瀏覽時設設定這個個標志,瀏瀏覽及其其它啟動動的Acctivvityy在下次次用戶返返回到mmaill程序時時都將全全部清除除。 FLAGG_ACCTIVVITYY_EXXCLUUDE_FROOM_RRECEENTSS如如果設置置,新的的

38、Acttiviity不不會在最最近啟動動的Acctivvityy的列表表中保存存。 FLAGG_ACCTIVVITYY_FOORWAARD_RESSULTT 如果設設置,并并且這個個Inttentt用于從從一個存存在的AActiivitty啟動動一個新新的Acctivvityy,那么么,這個個作為答答復目標標的Acctivvityy將會傳傳到這個個新的AActiivitty中。這種方方式下,新新的Acctivvityy可以調調用seetReesullt(iint),并且且這個結結果值將將發(fā)送給給那個作作為答復復目標的的 Acctivvityy。 FLAGG_ACCTIVVITYY_LAAUNC

39、CHEDD_FRROM_HISSTORRY 這個個標志一一般不由由應用程程序代碼碼設置,如如果這個個Acttiviity是是從歷史史記錄里里啟動的的(常按按HOMME鍵),那那么,系系統(tǒng)會幫幫你設定定。 FLAGG_ACCTIVVITYY_MUULTIIPLEE_TAASK 不不要使用用這個標標志,除除非你自自己實現(xiàn)現(xiàn)了應用用程序啟啟動器。與FLLAG_ACTTIVIITY_NEWW_TAASK結結合起來來使用,可可以禁用用把已存存的Taask送送入前臺臺的行為為。當設設置時,新新的Taask總總是會啟啟動來處處理Inntennt,而而不管這這是是否否已經(jīng)有有一個TTaskk可以處處理相同同的

40、事情情。 由于于默認的的系統(tǒng)不不包含圖圖形Taask管管理功能能,因此此,你不不應該使使用這個個標志,除除非你提提供給用用戶一種種方式可可以返回回到已經(jīng)經(jīng)啟動的的Tassk。 如如果FLLAG_ACTTIVIITY_NEWW_TAASK標標志沒有有設置,這這個標志志被忽略略。 FLAGG_ACCTIVVITYY_NOO_ANNIMAATIOON如果在在Inttentt中設置置,并傳傳遞給CConttextt.sttarttActtiviity()的話話,這個個標志將將阻止系系統(tǒng)進入入下一個個Acttiviity時時應用 Aciitivvityy遷移動動畫。這這并不意意味著動動畫將永永不運行行如

41、如果另一一個Acctivvityy在啟動動顯示之之前,沒沒有指定定這個標標志,那那么,動動畫將被被應用。這個標標志可以以很好的的用于執(zhí)執(zhí)行一連連串的操操作,而而動畫被被看作是是更高一一級的事事件的驅驅動。 FLAGG_ACCTIVVITYY_NOO_HIISTOORY 如如果設置置,新的的Acttiviity將將不再歷歷史sttackk中保留留。用戶戶一離開開它,這這個Acctivvityy就關閉閉了。這這也可以以通過設設置nooHisstorry特性性。 FLAGG_ACCTIVVITYY_NOO_USSER_ACTTIONN 如果設設置,作作為新啟啟動的AActiivitty進入入前臺時時

42、,這個個標志將將在Acctivvityy暫停之之前阻止止從最前前方的AActiivitty回調調的onnUseerLeeaveeHinnt()。 典型型的,一一個Acctivvityy可以依依賴這個個回調指指明顯式式的用戶戶動作引引起的AActiivitty移出出后臺。這個回回調在AActiivitty的生生命周期期中標記記一個合合適的點點,并關關閉一些些Nottifiicattionn。 如果果一個AActiivitty通過過非用戶戶驅動的的事件,如如來電或或鬧鐘,啟啟動的,這這個標志志也應該該傳遞給給Conntexxt.sstarrtAcctivvityy,保證證暫停的的Acttiviit

43、y不不認為用用戶已經(jīng)經(jīng)知曉其其Nottifiicattionn。 FLAGG_ACCTIVVITYY_PRREVIIOUSS_ISS_TOOP Iff seet aand thiis iinteent is beiing useed tto llaunnch a nnew acttiviity froom aan eexisstinng oone, thhe ccurrrentt acctivvityy wiill nott bee coountted as thee toop aactiivitty ffor deccidiing wheetheer tthe neww inntennt s

44、shouuld be delliveeredd too thhe ttop inssteaad oof sstarrtinng aa neew oone. Thhe pprevviouus aactiivitty wwilll bee ussed as thee toop, witth tthe asssumpptioon bbeinng tthatt thhe ccurrrentt acctivvityy wiill finnishh ittsellf iimmeediaatelly. FLAGG_ACCTIVVITYY_REEORDDER_TO_FROONT如果果在Inntennt中設設置

45、,并并傳遞給給Conntexxt.sstarrtAcctivvityy(),這這個標志志將引發(fā)發(fā)已經(jīng)運運行的AActiivitty移動動到歷史史staack的的頂端。 例如,假假設一個個Tassk由四四個Acctivvityy組成:A,BB,C,D。如如果D調調用sttarttActtiviity()來啟啟動Acctivvityy B,那那么,BB會移動動到歷史史staack的的頂端,現(xiàn)現(xiàn)在的次次序變成成A,CC,D,B。如如果FLLAG_ACTTIVIITY_CLEEAR_TOPP標志也也設置的的話,那那么這個個標志將將被忽略略。 請描述下下Acttiviity的的生命周周期。答:accti

46、vvityy的生命命周期方方法有:onCCreaate()、oonSttartt()、onRReSttartt()、onRResuume()、oonPaausee()、onSStopp()、onDDesttoryy();可見生命命周期:從onnStaart()直到到系統(tǒng)調調用onnStoop()前臺生命命周期:從onnRessumee()直直到系統(tǒng)統(tǒng)調用oonPaausee()actiivitty在屏屏幕旋轉轉時的生生命周期期答:不設設置Acctivvityy的anndrooid:connfiggChaangees時,切切屏會重重新調用用各個生生命周期期,切橫橫屏時會會執(zhí)行一一次,切切豎屏時時

47、會執(zhí)行行兩次;設置AActiivitty的aandrroidd:coonfiigChhangges=orrienntattionn時,切切屏還是是會重新新調用各各個生命命周期,切切橫、豎豎屏時只只會執(zhí)行行一次;設置AActiivitty的aandrroidd:coonfiigChhangges=orrienntattionn|keeybooarddHidddenn時,切切屏不會會重新調調用各個個生命周周期,只只會執(zhí)行行onCConffiguurattionnChaangeed方法法如何啟用用Serrvicce,如如何停用用Serrvicce。服務的開開發(fā)比較較簡單,如如下:第一步:繼承SSer

48、vvicee類publlic claass SMSSSerrvicce eexteendss Seerviice 第二步:在AnndrooidMManiifesst.xxml文文件中的的節(jié)點點里對服服務進行行配置:服務不能能自己運運行,需需要通過過調用CConttextt.sttarttSerrvicce()或Coonteext.binndSeerviice()方法法啟動服服務。這這兩個方方法都可可以啟動動Serrvicce,但但是它們們的使用用場合有有所不同同。使用用staartSServvicee()方方法啟用用服務,調調用者與與服務之之間沒有有關連,即即使調用用者退出出了,服服務仍然然運

49、行。使用bbinddSerrvicce()方法啟啟用服務務,調用用者與服服務綁定定在了一一起,調調用者一一旦退出出,服務務也就終終止,大大有“不求同同時生,必必須同時時死”的特點點。如果打算算采用CConttextt.sttarttSerrvicce()方法啟啟動服務務,在服服務未被被創(chuàng)建時時,系統(tǒng)統(tǒng)會先調調用服務務的onnCreeatee()方方法,接接著調用用onSStarrt()方法。如果調調用sttarttSerrvicce()方法前前服務已已經(jīng)被創(chuàng)創(chuàng)建,多多次調用用staartSServvicee()方方法并不不會導致致多次創(chuàng)創(chuàng)建服務務,但會會導致多多次調用用onSStarrt()方

50、法。采用sstarrtSeerviice()方法法啟動的的服務,只只能調用用Conntexxt.sstoppSerrvicce()方法結結束服務務,服務務結束時時會調用用onDDesttroyy()方方法。如果打算算采用CConttextt.biindSServvicee()方方法啟動動服務,在在服務未未被創(chuàng)建建時,系系統(tǒng)會先先調用服服務的oonCrreatte()方法,接接著調用用onBBindd()方方法。這這個時候候調用者者和服務務綁定在在一起,調調用者退退出了,系系統(tǒng)就會會先調用用服務的的onUUnbiind()方法法,接著著調用oonDeestrroy()方法法。如果果調用bbind

51、dSerrvicce()方法前前服務已已經(jīng)被綁綁定,多多次調用用binndSeerviice()方法法并不會會導致多多次創(chuàng)建建服務及及綁定(也就是是說onnCreeatee()和和onBBindd()方方法并不不會被多多次調用用)。如如果調用用者希望望與正在在綁定的的服務解解除綁定定,可以以調用uunbiindSServvicee()方方法,調調用該方方法也會會導致系系統(tǒng)調用用服務的的onUUnbiind()-onnDesstrooy()方法。服務常用用生命周周期回調調方法如如下: onCrreatte() 該方方法在服服務被創(chuàng)創(chuàng)建時調調用,該該方法只只會被調調用一次次,無論論調用多多少次ss

52、tarrtSeerviice()或bbinddSerrvicce()方法,服服務也只只被創(chuàng)建建一次。onDeestrroy()該方方法在服服務被終終止時調調用。與采用CConttextt.sttarttSerrvicce()方法啟啟動服務務有關的的生命周周期方法法onSttartt() 只有采采用Coonteext.staartSServvicee()方方法啟動動服務時時才會回回調該方方法。該該方法在在服務開開始運行行時被調調用。多多次調用用staartSServvicee()方方法盡管管不會多多次創(chuàng)建建服務,但但onSStarrt() 方法法會被多多次調用用。與采用CConttextt.bi

53、indSServvicee()方方法啟動動服務有有關的生生命周期期方法onBiind()只有有采用CConttextt.biindSServvicee()方方法啟動動服務時時才會回回調該方方法。該該方法在在調用者者與服務務綁定時時被調用用,當調調用者與與服務已已經(jīng)綁定定,多次次調用CConttextt.biindSServvicee()方方法并不不會導致致該方法法被多次次調用。onUnnbinnd()只有采采用Coonteext.binndSeerviice()方法法啟動服服務時才才會回調調該方法法。該方方法在調調用者與與服務解解除綁定定時被調調用注冊廣播播有幾種種方式,這這些方式式有何優(yōu)優(yōu)缺

54、點?請談談談Anddroiid引入入廣播機機制的用用意。答:首先先寫一個個類要繼繼承BrroaddcasstReeceiiverr第一種:在清單單文件中中聲明,添加 acttionn anndrooid:namme=anddroiid.pprovvideer.TTeleephoony.SMSS_REECEIIVEDD)第二種使使用代碼碼進行注注冊如:InteentFFiltter fillterr = neew IInteentFFiltter(ovidder.Tellephhonyy.SMMS_RRECEEIVEED);IncoominngSMMSReeceiive

55、rr reeceiiverr = neww InncommgSMMSReeceiiverr();regiisteerReeceiiverr(reeceiiverr.fiilteer);兩種注冊冊類型的的區(qū)別是是:1)第一一種不是是常駐型型廣播,也也就是說說廣播跟跟隨程序序的生命命周期。2)第二二種是常常駐型,也也就是說說當應用用程序關關閉后,如如果有信信息廣播播來,程程序也會會被系統(tǒng)統(tǒng)調用自自動運行行。請解釋下下在單線線程模型型中Meessaage、Hanndleer、MMesssagee Quueuee、Looopeer之間間的關系系。答:簡單單的說,HHanddlerr獲取當當前線程程中的

56、lloopper對對象,lloopper用用來從存存放Meessaage的的MesssaggeQuueuee中取出出Messsagge,再再有Haandller進進行Meessaage的的分發(fā)和和處理.Messsagee Quueuee(消息息隊列):用來來存放通通過Haandller發(fā)發(fā)布的消消息,通通常附屬屬于某一一個創(chuàng)建建它的線線程,可可以通過過Loooperr.myyQueeue()得到到當前線線程的消消息隊列列Handdlerr:可以以發(fā)布或或者處理理一個消消息或者者操作一一個Ruunnaablee,通過過Hanndleer發(fā)布布消息,消消息將只只會發(fā)送送到與它它關聯(lián)的的消息隊隊列,

57、然然也只能能處理該該消息隊隊列中的的消息Loopper:是Haandller和和消息隊隊列之間間通訊橋橋梁,程程序組件件首先通通過Haandller把把消息傳傳遞給LLoopper,LLoopper把把消息放放入隊列列。Looopeer也把把消息隊隊列里的的消息廣廣播給所所有的Handdlerr:Haandller接接受到消消息后調調用haandlleMeessaage進進行處理理Messsagee:消息息的類型型,在HHanddlerr類中的的hanndleeMesssagge方法法中得到到單個的的消息進進行處理理在單線程程模型下下,為了了線程通通信問題題,Anndrooid設設計了一一個M

58、eessaage Queeue(消息隊隊列), 線程間間可以通通過該MMesssagee Quueuee并結合合Hanndleer和LLoopper組組件進行行信息交交換。下下面將對對它們進進行分別別介紹:1. MMesssagee Messsagge消息息,理解解為線程程間交流流的信息息,處理理數(shù)據(jù)后后臺線程程需要更更新UII,則發(fā)發(fā)送Meessaage內(nèi)內(nèi)含一些些數(shù)據(jù)給給UI線線程。2. HHanddlerr Hanndleer處理理者,是是Messsagge的主主要處理理者,負負責Meessaage的的發(fā)送,MMesssagee內(nèi)容的的執(zhí)行處處理。后后臺線程程就是通通過傳進進來的 Han

59、ndleer對象象引用來來senndMeessaage(Messsagge)。而使用用Hanndleer,需需要immpleemennt 該該類的 hanndleeMesssagge(MMesssagee)方法法,它是是處理這這些Meessaage的的操作內(nèi)內(nèi)容,例例如Uppdatte UUI。通通常需要要子類化化Hanndleer來實實現(xiàn)haandlleMeessaage方方法。3. MMesssagee Quueuee Messsagge QQueuue消息息隊列,用用來存放放通過HHanddlerr發(fā)布的的消息,按按照先進進先出執(zhí)執(zhí)行。 每個mmesssagee quueuee都會有有一

60、個對對應的HHanddlerr。Haandller會會向meessaage queeue通通過兩種種方法發(fā)發(fā)送消息息:seendMMesssagee或poost。這兩種種消息都都會插在在messsagge qqueuue隊尾尾并按先先進先出出執(zhí)行。但通過過這兩種種方法發(fā)發(fā)送的消消息執(zhí)行行的方式式略有不不同:通通過seendMMesssagee發(fā)送的的是一個個messsagge對象象,會被被 Haandller的的hanndleeMesssagge()函數(shù)處處理;而而通過ppostt方法發(fā)發(fā)送的是是一個rrunnnablle對象象,則會會自己執(zhí)執(zhí)行。4. LLoopper Loooperr是每條

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論