版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、android面試題總結(jié)加強(qiáng)再加強(qiáng)版android面試題總結(jié)加強(qiáng)再加強(qiáng)版 篇一: andrid面試題總結(jié)加強(qiáng)再加強(qiáng)版 andrid面試題總結(jié)加強(qiáng)再加強(qiáng)版 (一) 201X-08-11 10:47:38 我來說兩句 收藏 我要投稿 在加強(qiáng)版的基礎(chǔ)上又再加強(qiáng)的andrid應(yīng)用面試題集 有些補(bǔ)充略顯臃腫,只為學(xué)習(xí) 1.activity的生命周期。 方法 描述 可被殺死 下一個(gè) nCreate 在activity第一次被創(chuàng)建的時(shí)候調(diào)用。這里是你做所有初始化設(shè)置的地方創(chuàng)建視圖、設(shè)置布局、綁定數(shù)據(jù)至列表等。如果曾經(jīng)有狀態(tài)記錄(參閱后述Saving Activity State。),則調(diào)用此方法時(shí)會傳入一個(gè)
2、包含著此activity以前狀態(tài)的包對象做為參數(shù)。 總繼之以nStart。 否 nStart nRestart 在activity停止后nStp,在再次啟動(dòng)之前被調(diào)用。 總繼之以nStart。 否 nStart nStart 當(dāng)activity正要變得為用戶所見時(shí)被調(diào)用。 當(dāng)activity轉(zhuǎn)向前臺時(shí)繼以nResume,在activity變?yōu)殡[藏時(shí)繼以nStp。 否 nResume r nStp nResume 在activity開始與用戶進(jìn)行交互之前被調(diào)用。此時(shí)activity位于堆棧頂部,并接受用戶輸入。 繼之以nPause。 否 nPause nPause 當(dāng)系統(tǒng)將要啟動(dòng)另一個(gè)activ
3、ity時(shí)調(diào)用。此方法主要用來將未保存的變化進(jìn)行持久化,停止類似動(dòng)畫這樣耗費(fèi)CPU的動(dòng)作等。這一切動(dòng)作應(yīng)該在短時(shí)間內(nèi)完成,因?yàn)橄乱粋€(gè)activity必須等到此方法返回后才會繼續(xù)。 當(dāng)activity重新回到前臺是繼以nResume。當(dāng)activity變?yōu)橛脩舨豢梢姇r(shí)繼以nStp。 是 nResume r nStp nStp 當(dāng)activity不再為用戶可見時(shí)調(diào)用此方法。這可能發(fā)生在它被銷毀或者另一個(gè)activity(可能是現(xiàn)存的或者是新的)回到運(yùn)行狀態(tài)并覆蓋了它。 如果activity再次回到前臺跟用戶交互則繼以nRestart,如果關(guān)閉 activity則繼以nDestry。 是 nResta
4、rt r nDestry nDestry 在activity銷毀前調(diào)用。這是activity接收的最后一個(gè)調(diào)用。這可能發(fā)生在activity結(jié)束(調(diào)用了它的 finish 方法)或者因?yàn)橄到y(tǒng)需要空間所以臨時(shí)的銷毀了此acitivity的實(shí)例時(shí)。你可以用isFinishing 方法來區(qū)分這兩種情況。 是 nthing (補(bǔ)充) 1、nCreate:當(dāng)Activity被創(chuàng)建的時(shí)候調(diào)用(第一次)。操作: 設(shè)置布局文件,初始化視圖,綁定數(shù)據(jù)文件等。 2、nStart:當(dāng)Activity能被我們看到的時(shí)候。 3、nResume:當(dāng)Activity獲得用戶的焦點(diǎn)的時(shí)候,就是能被用戶操作的時(shí)候。 4、nPa
5、usepause暫停的意思:Activity暫停。應(yīng)用程序啟動(dòng)了另一個(gè)Activity的時(shí)候。例子: 來了一個(gè)電話,系統(tǒng)啟動(dòng)了電話Activity。在這個(gè)函數(shù)里要做的就是把Activity的數(shù)據(jù)保存起來,當(dāng)接完電話的時(shí)候,再把這些數(shù)據(jù)讀出來,把原來的Activity還原出來。 5、nstp: 當(dāng)?shù)诙€(gè)Activity把第一個(gè)Activity完全遮擋住了的時(shí)候。對話框并沒有把原來的Activity完全遮擋起來,不會調(diào)用。 6、nDestry:銷毀Activity。1)調(diào)用了finish方法。2)系統(tǒng)資源不夠用了。 函數(shù)調(diào)用過程: 啟動(dòng)第一個(gè)Activity的時(shí)候: 第一次創(chuàng)建nCreate- A
6、ctivity可見了nStart- Activity可以操作了nResume。 點(diǎn)擊第一個(gè)Activity上的按鈕通過Intent 跳到第二個(gè)Activity: 第一個(gè)Activity暫停nPause- 創(chuàng)建第二個(gè)ActivitynCreate- Activity可見nStart- Activity可操作nResume- 第一個(gè)Activity被第二個(gè)Activity完全遮蓋nStp(如果調(diào)用了finish,或者系統(tǒng)資源緊缺,則會被銷毀nDestry)。 點(diǎn)擊系統(tǒng)返回功能建,從第二個(gè)Activity回到第一個(gè)Activity : 第二個(gè)Activity暫停nPause- 第一個(gè)Activity
7、重啟動(dòng)nRestart(并沒有被銷毀,如果銷毀了則要?jiǎng)?chuàng)建nCreate)- 第一個(gè)Activity可見nStart- 第一個(gè)Activity可操作nResume- 第二個(gè)Activity被完全遮蓋nStp(如果調(diào)用了finish,或者系統(tǒng)資源緊缺,則會被銷毀nDestry)。 2.橫豎屏切換時(shí)候activity的生命周期 1.不設(shè)置Activity的andrid:cnfigChanges時(shí),切屏?xí)匦抡{(diào)用各個(gè)生命周期,切橫屏?xí)r會執(zhí)行一次,切豎屏?xí)r會執(zhí)行兩次. 作者: superjunjin 2.設(shè)置Activity的andrid:cnfigChanges= rientatin 時(shí),切屏還是會重
8、新調(diào)用各個(gè)生命周期,切橫、豎屏?xí)r只會執(zhí)行一次. 3.設(shè)置Activity的andrid:cnfigChanges= rientatin|keybardHidden 時(shí),切屏不會重新調(diào)用各個(gè)生命周期,只會執(zhí)行nCnfiguratinChanged方法. 3.andrid中的動(dòng)畫有哪幾類,它們的特點(diǎn)和區(qū)別是什么? Andrid提供兩種創(chuàng)建簡單動(dòng)畫的機(jī)制: teened animatin(補(bǔ)間動(dòng)畫) 和 frame-by-frame animatin(幀動(dòng)畫). teened animatin: 通過對場景里的對象不斷做圖像變換(平移、縮放、旋轉(zhuǎn))產(chǎn)生動(dòng)畫效果 frame-by-frame anim
9、atin: 順序播放事先做好的圖像,跟電影類似 這兩種動(dòng)畫類型都能在任何Vie對象中使用,用來提供簡單的旋轉(zhuǎn)計(jì)時(shí)器,activity圖標(biāo)及其他有用的UI元素。Teened animatin被 andrid.vie.animatin包所操作;frame-by-frame animatin被 andrid.graphics.draable.AnimatinDraable類所操作。 想了解更多關(guān)于創(chuàng)建teened和frame-by-frame動(dòng)畫的信息,讀一下Dev Guide-Graphics-2D Graphics里面相關(guān)部分的討論。 Animatin 是以 XML格式定義的,定義好的XML文件
10、存放在res/anim中。由于Teen Animatin與Frame-by-frame Animatin的定義、使用都有很大的差異,我們將分開介紹,本篇幅中主要介紹Teen Animatin的定義與使用。按照XML文檔的結(jié)構(gòu)【父節(jié)點(diǎn),子節(jié)點(diǎn),屬性】來介紹Teen Animatin,其由4種類型: Alpha: 漸變透明度動(dòng)畫效果 Scale: 漸變尺寸伸縮動(dòng)畫效果 Translate: 畫面轉(zhuǎn)換位置移動(dòng)動(dòng)畫效果 篇二: Andrid面試題總結(jié)強(qiáng)勁版 (一) 自己總結(jié)的最強(qiáng)andrid應(yīng)用面試題集 1.activity的生命周期。 nCreate 在activity第一次被創(chuàng)建的時(shí)候調(diào)用。這里是
11、你做所有初始化設(shè)置的地方創(chuàng)建視圖、綁定數(shù)據(jù)至列表等。如果曾經(jīng)有狀態(tài)記錄(參閱后述Saving Activity State。),則調(diào)用此否 nStart 方法時(shí)會傳入一個(gè)包含著此activity以 前狀態(tài)的包對象做為參數(shù)。 總繼之以nStart。 nRestart 在activity停止后,在再次啟動(dòng)之前被調(diào)用。 總繼之以nStart。 當(dāng)activity正要變得為用戶所見時(shí)被調(diào) 用。 否 nStart nStart 當(dāng)activity轉(zhuǎn)向前臺時(shí)繼以 nResume,在activity變?yōu)殡[藏時(shí)繼 以nStp。 nResume 否 r nStp 在activity開始與用戶進(jìn)行交互之前被調(diào)用。
12、此時(shí)activity位于堆棧頂部,并 nResume 接受用戶輸入。 否 nPause 繼之以nPause。 當(dāng)系統(tǒng)將要啟動(dòng)另一個(gè)activity時(shí)調(diào) 用。此方法主要用來將未保存的變化進(jìn) 行持久化,停止類似動(dòng)畫這樣耗費(fèi)CPUnResume 的動(dòng)作等。這一切動(dòng)作應(yīng)該在短時(shí)間內(nèi)nPause 是 r 完成,因?yàn)橄乱粋€(gè)activity必須等到此nStp 方法返回后才會繼續(xù)。 當(dāng)activity重新回到前臺是繼以 nResume。當(dāng)activity變?yōu)橛脩舨豢?見時(shí)繼以nStp。 當(dāng)activity不再為用戶可見時(shí)調(diào)用此方 法。這可能發(fā)生在它被銷毀或者另一個(gè) activity(可能是現(xiàn)存的或者是新的)
13、回到運(yùn)行狀態(tài)并覆蓋了它。 如果activity再次回到前臺跟用戶交互 則繼以nRestart,如果關(guān)閉activity 則繼以nDestry。 nStp nRestart 是 r nDestry nDestry 在activity銷毀前調(diào)用。這是activity接收的最后一個(gè)調(diào)用。這可能發(fā)生在activity結(jié)束(調(diào)用了它的 finish 方法)或者因?yàn)橄到y(tǒng)需要是 nthing 空間所以臨時(shí)的銷毀了此acitivity的 實(shí)例時(shí)。你可以用isFinishing 方法 來區(qū)分這兩種情況。 2.橫豎屏切換時(shí)候activity的生命周期 1.不設(shè)置Activity的andrid:cnfigChang
14、es時(shí),切屏?xí)匦抡{(diào)用各個(gè)生命周期,切橫屏?xí)r會執(zhí)行一次,切豎屏?xí)r會執(zhí)行兩次. 2.設(shè)置Activity的andrid:cnfigChanges= rientatin 時(shí),切屏還是會重新調(diào)用各個(gè)生命周期,切橫、豎屏?xí)r只會執(zhí)行一次. 3.設(shè)置Activity的andrid:cnfigChanges= rientatin|keybardHidden 時(shí),切屏不會重新調(diào)用各個(gè)生命周期,只會執(zhí)行nCnfiguratinChanged方法. 4. 一條最長的短信息約占多少byte? 中文70(包括標(biāo)點(diǎn)),英文160個(gè)字節(jié)。 5.handler機(jī)制的原理 andrid提供了 Handler 和 Lper 來
15、滿足線程間的通信。Handler 先進(jìn)先出原則。Lper類用來管理特定線程內(nèi)對象之間的消息交換(Message Exchange)。 1)Lper: 一個(gè)線程可以產(chǎn)生一個(gè)Lper對象,由它來管理此線程里的 Message Queue(消息隊(duì)列)。 2)Handler: 你可以構(gòu)造Handler對象來與Lper溝通,以便push新消息到Message Queue里;或者接收Lper從Message Queue取出)所送來的消息。 3) Message Queue(消息隊(duì)列):用來存放線程放入的消息。 4)線程: UI thread 通常就是main thread,而Andrid啟動(dòng)程序時(shí)會替它建
16、立一個(gè)Message Queue。 6.什么是嵌入式實(shí)時(shí)操作系統(tǒng), Andrid 操作系統(tǒng)屬于實(shí)時(shí)操作系統(tǒng)嗎? 嵌入式實(shí)時(shí)操作系統(tǒng)是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時(shí),能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定的時(shí)間之內(nèi)來控制生產(chǎn)過程或?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í)兩種,而andrid是基于linux內(nèi)核的,因此屬于軟實(shí)時(shí)。 7.andrid中線程與線程,進(jìn)程與進(jìn)程之間如何通信 1、一個(gè) Andrid 程序開始運(yùn)行時(shí),會單獨(dú)啟動(dòng)一
17、個(gè)Prcess。 默認(rèn)情況下,所有這個(gè)程序中的Activity或者Service都會跑在這個(gè)Prcess。 默認(rèn)情況下,一個(gè)Andrid程序也只有一個(gè)Prcess,但一個(gè)Prcess下卻可以有許多個(gè)Thread。 2、一個(gè) Andrid 程序開始運(yùn)行時(shí),就有一個(gè)主線程Main Thread被創(chuàng)建。該線程主要負(fù)責(zé)UI界面的顯示、更新和控件交互,所以又叫UI Thread。 一個(gè)Andrid程序創(chuàng)建之初,一個(gè)Prcess呈現(xiàn)的是單線程模型-即Main Thread,所有的任務(wù)都在一個(gè)線程中運(yùn)行。所以,Main Thread所調(diào)用的每一個(gè)函數(shù),其耗時(shí)應(yīng)該越短越好。而對于比較費(fèi)時(shí)的工作,應(yīng)該設(shè)法交給子
18、線程去做,以避免阻塞主線程(主線程被阻塞,會導(dǎo)致程序假死 現(xiàn)象)。 3、Andrid單線程模型: Andrid UI操作并不是線程安全的并且這些操作必須在UI線程中執(zhí)行。如果在子線程中直接修改UI,會導(dǎo)致異常。 8.Andrid dvm的進(jìn)程和Linux的進(jìn)程, 應(yīng)用程序的進(jìn)程是否為同一個(gè)概念 DVM指dalivk的虛擬機(jī)。每一個(gè)Andrid應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例。而每一個(gè)DVM都是在Linux 中的一個(gè)進(jìn)程,所以說可以認(rèn)為是同一個(gè)概念。 9.sim卡的EF 文件有何作用 sim卡的文件系統(tǒng)有自己規(guī)范,主要是為了和手機(jī)通訊,sim本 身可以有自己
19、的操作系統(tǒng),EF就是作存儲并和手機(jī)通訊用的 1 1.讓Activity變成一個(gè)窗口: Activity屬性設(shè)定 講點(diǎn)輕松的吧,可能有人希望做出來的應(yīng)用程序是一個(gè)漂浮在手機(jī)主界面的東西,那么很 簡單你只需要設(shè)置 一下Activity的主題就可以了在AndridManifest.xml 中定義 Activity的 地方一句話: Xml代碼 1. andrid :theme= andrid:style/Theme.Dialg 這就使你的應(yīng)用程序變成對話框的形式彈出來了,或者 Xml代碼 1. andrid:theme= andrid:style/Theme.Translucent 就變成半透明的,友
20、情提示-.-類似的這種activity的屬性可以在andrid.R.styleable 類的AndridManifestActivity 方法中看到,AndridManifest.xml中所有元素的屬性的介紹都可以參考這個(gè)類andrid.R.styleable 上面說的是屬性名稱,具體有什么值是在andrid.R.style中 可以看到,比如這個(gè) andrid:style/Theme.Dialg 就對應(yīng)于andrid.R.style.Theme_Dialg ,( _ 換成 . -注 意: 這個(gè)是文章內(nèi)容不是笑臉)就可以用在描述文件 中了,找找類定義和描述文件中的對應(yīng)關(guān)系就都明白了。 1 2.如
21、何將SQLite數(shù)據(jù)庫(dictinary.db文件)與apk文件一起發(fā)布? 解答: 可以將dictinary.db文件復(fù)制到Eclipse Andrid工程中的res a目錄中。所有在res a目錄中的文件不會被壓縮,這樣可以直接提取該目錄中的文件。可以將dictinary.db文件復(fù)制到res a目錄中 1 3.如何將打開res a目錄中的數(shù)據(jù)庫文件? 解答: 在Andrid中不能直接打開res a目錄中的數(shù)據(jù)庫文件,而需要在程序第一次啟動(dòng)時(shí)將該文件復(fù)制到手機(jī)內(nèi)存或SD卡的某個(gè)目錄中,然后再打開該數(shù)據(jù)庫文件。復(fù)制的基本方法是使用getResurces.penRaResurce方法獲得res
22、 a目錄中資源 的 InputStream對象,然后將該InputStream對象中的數(shù)據(jù)寫入其他的目錄中相應(yīng)文件中。在Andrid SDK中可以使用SQLiteDatabase.penrCreateDatabase方法來打開任意目錄中的SQLite數(shù)據(jù)庫文件。 1 4.在andrid中mvc的具體體現(xiàn) Andrid 的官方建議應(yīng)用程序的開發(fā)采用MVC 模式。何謂MVC?先看看下圖 MVC 是Mdel,Vie,Cntrller 的縮寫,從上圖可以看出MVC 包含三個(gè)部分: . 模型(Mdel)對象: 是應(yīng)用程序的主體部分,所有的業(yè)務(wù)邏輯都應(yīng)該寫在該 層。 . 視圖(Vie)對象: 是應(yīng)用程序中
23、負(fù)責(zé)生成用戶界面的部分。也是在整個(gè) MVC 架構(gòu)中用戶唯一可以看到的一層,接收用戶的輸入,顯示處理結(jié)果。 . 控制器(Cntrl)對象: 是根據(jù)用戶的輸入,控制用戶界面數(shù)據(jù)顯示及更新 Mdel 對象狀態(tài)的部分,控制器更重要的一種導(dǎo)航功能,想用用戶出發(fā)的相 關(guān)事件,交給M 哦得了處理。 篇三: Andrid面試題總結(jié)強(qiáng)勁版 (二) (轉(zhuǎn)自CSDN) 轉(zhuǎn)載地址: /itachi85/article/details/7426457 1 6.Andrid常用控件的信息 單選框(RadiButtn與RadiGrup): RadiGrup用于對單選框進(jìn)行分組,相同組內(nèi)的單選框只有一
24、個(gè)單選框被選中。 事件: setnCheckedChangeListener,處理單選框被選擇事件。把 RadiGrup.nCheckedChangeListener實(shí)例作為參數(shù)傳入。 多選框(CheckBx): 每個(gè)多選框都是獨(dú)立的,可以通過迭代所有的多選框,然后根據(jù)其狀態(tài)是否被選中在獲取其值。 事件: setnCheckChangeListener處理多選框被選擇事件。把 CmpundButtn.nCheckedChangeListener實(shí)例作為參數(shù)傳入 下拉列表框(Spring): Spinner.getItemAtPsitin(Spinner.getSelectedItemPsiti
25、n);獲取下拉列表框的值。 事件: setnItemSelectedListener,處理下拉列表框被選擇事件把 AdapterVie.nItemSelectedListener實(shí)例作為參數(shù)傳入; 拖動(dòng)條(SeekBar): SeekBar.getPrgress獲取拖動(dòng)條當(dāng)前值 事件:setnSeekBarChangeListener,處理拖動(dòng)條值變化事件,把 SeekBar.nSeekBarChangeListener實(shí)例作為參數(shù)傳入。 菜單(Menu): 重寫Activity的nCreatptinMenu(Menu menu)方法,該方法用于創(chuàng)建選項(xiàng)菜單,咋用戶按下手機(jī)的 Menu 按鈕時(shí)
26、就會顯示創(chuàng)建好的菜單,在nCreatptinMenu(Menu Menu)方法內(nèi)部可以調(diào)用Menu.add方法實(shí)現(xiàn)菜單的添加。 重寫Activity的nMenuItemSelected方法,該方法用于處理菜單被選擇事件。 進(jìn)度對話框(PrgressDialg): 創(chuàng)建并顯示一個(gè)進(jìn)度對話框: PrgressDialg.sh(PrgressDialgActivity.this, 請稍等 , 數(shù)據(jù)正在加載中. ,true); 設(shè)置對話框的風(fēng)格: setPrgressStyle PrgressDialg.STYLE_SPINNER 旋轉(zhuǎn)進(jìn)度條風(fēng)格(為默認(rèn)風(fēng)格) PrgressDialg.STYLE_H
27、RIZNTAL 橫向進(jìn)度條風(fēng)格 1 7.請介紹下Andrid中常用的五種布局 Andrid布局是應(yīng)用界面開發(fā)的重要一環(huán),在Andrid中,共有五種布局方式,分別是: FrameLayut(框架布局),LinearLayut (線性布局), AbsluteLayut(絕對布局),RelativeLayut(相對布局),TableLayut(表格布局)。 1.FrameLayut 這個(gè)布局可以看成是墻腳堆東西,有一個(gè)四方的矩形的左上角墻腳,我們放了第一個(gè)東西,要再放一個(gè),那就在放在原來放的位置的上面,這樣依次的放,會蓋住原來的東西。這個(gè)布局比較簡單,也只能放一點(diǎn)比較簡單的東西。 2.LinearL
28、ayut 線性布局,這個(gè)東西,從外框上可以理解為一個(gè)div,他首先是一個(gè)一個(gè)從上往下羅列在屏幕上。每一個(gè)LinearLayut里面又可分為垂直布局 (andrid:rientatin= vertical )和水平布局(andrid:rientatin= hrizntal )。當(dāng)垂直布局時(shí),每一行就只有一個(gè)元素,多個(gè)元素依次垂直往下;水平布局時(shí),只有一行,每一個(gè)元素依次向右排列。 linearLayut中有一個(gè)重要的屬性 andrid:layut_eight= 1 ,這個(gè)eight在垂直布局時(shí),代表行距;水平的時(shí)候代表列寬;eight值越大就越大。 3.AbsluteLayut 絕對布局猶如di
29、v指定了abslute屬性,用X,Y坐標(biāo)來指定元素的位置 andrid:layut_x= 20px andrid:layut_y= 12px 這種布局方式也比較簡單,但是在垂直隨便切換時(shí),往往會出問題,而且多個(gè)元素的時(shí)候,計(jì)算比較麻煩。 4.RelativeLayut 相對布局可以理解為某一個(gè)元素為參照物,來定位的布局方式。主要屬性有: 相對于某一個(gè)元素 andrid:layut_bel= id/aaa 該元素在 id為aaa的下面 andrid:layut_tLeftf= id/bbb 改元素的左邊是bbb 相對于父元素的地方 andrid:layut_alignParentLeft= tr
30、ue 在父元素左對齊 andrid:layut_alignParentRight= true 在父元素右對齊 還可以指定邊距等,具體詳見API 5.TableLayut 表格布局類似Html里面的Table。每一個(gè)TableLayut里面有表格行TableR,TableR里面可以具體定義每一個(gè)元素,設(shè)定他的對齊方式 andrid:gravity= 。 每一個(gè)布局都有自己適合的方式,另外,這五個(gè)布局元素可以相互嵌套應(yīng)用,做出美觀的界面。 1 8.如何啟用Service,如何停用Service Andrid中的服務(wù)和inds中的服務(wù)是類似的東西,服務(wù)一般沒有用戶操作界面,它運(yùn)行于系統(tǒng)中不容易被用戶
31、發(fā)覺,可以使用它開發(fā)如監(jiān)控之類的程序。服務(wù)的開發(fā)比較簡單,如下: 第一步: 繼承Service類 public class SMSService extends Service 第二步: 在AndridManifest.xml文件中的 applicatin 節(jié)點(diǎn)里對服務(wù)進(jìn)行配置: service andrid:name= .SMSService / 服務(wù)不能自己運(yùn)行,需要通過調(diào)用Cntext.startService或Cntext.bindService方法啟動(dòng)服務(wù)。這兩個(gè)方法都可以啟動(dòng)Service,但是它們的使用場合有所不同。使用startService方法啟用服務(wù),調(diào)用者與服務(wù)之間沒有關(guān)
32、連,即使調(diào)用者退出了,服務(wù)仍然運(yùn)行。使用bindService方法啟用服務(wù),調(diào)用者與服務(wù)綁定在了一起,調(diào)用者一旦退出,服務(wù)也就終止,大有“不求同時(shí)生,必須同時(shí)死”的特點(diǎn)。 如果打算采用Cntext.startService方法啟動(dòng)服務(wù),在服務(wù)未被創(chuàng)建時(shí),系統(tǒng)會先調(diào)用服務(wù)的nCreate方法,接著調(diào)用nStart方法。如果調(diào)用startService方法前服務(wù)已經(jīng)被創(chuàng)建,多次調(diào)用startService方法并不會導(dǎo)致多次創(chuàng)建服務(wù),但會導(dǎo)致多次調(diào)用nStart方法。采用startService方法啟動(dòng)的服務(wù),只能調(diào)用Cntext.stpService方法結(jié)束服務(wù),服務(wù)結(jié)束時(shí)會調(diào)用nDestry方法
33、。 如果打算采用Cntext.bindService方法啟動(dòng)服務(wù),在服務(wù)未被創(chuàng)建時(shí),系統(tǒng)會先調(diào)用服務(wù)的nCreate方法,接著調(diào)用nBind方法。這個(gè)時(shí)候調(diào)用者和服務(wù)綁定在一起,調(diào)用者退出了,系統(tǒng)就會先調(diào)用服務(wù)的nUnbind方法,接著調(diào)用nDestry方法。如果調(diào)用bindService方法前服務(wù)已經(jīng)被綁定,多次調(diào)用bindService方法并不會導(dǎo)致多次創(chuàng)建服務(wù)及綁定(也就是說nCreate和nBind方法并不會被多次調(diào)用)。如果調(diào)用者希望與正在綁定的服務(wù)解除綁定,可以調(diào)用unbindService方法,調(diào)用該方法也會導(dǎo)致系統(tǒng)調(diào)用服務(wù)的 nUnbind- nDestry方法。 服務(wù)常用生命
34、周期回調(diào)方法如下: nCreate 該方法在服務(wù)被創(chuàng)建時(shí)調(diào)用,該方法只會被調(diào)用一次,無論調(diào)用多少次startService或bindService方法,服務(wù)也只被創(chuàng)建一次。 nDestry該方法在服務(wù)被終止時(shí)調(diào)用。 與采用Cntext.startService方法啟動(dòng)服務(wù)有關(guān)的生命周期方法 nStart 只有采用Cntext.startService方法啟動(dòng)服務(wù)時(shí)才會回調(diào)該方法。該方法在服務(wù)開始運(yùn)行時(shí)被調(diào)用。多次調(diào)用startService方法盡管不會多次創(chuàng)建服務(wù),但nStart 方法會被多次調(diào)用。 與采用Cntext.bindService方法啟動(dòng)服務(wù)有關(guān)的生命周期方法 nBind只有采用C
35、ntext.bindService方法啟動(dòng)服務(wù)時(shí)才會回調(diào)該方法。該方法在調(diào)用者與服務(wù)綁定時(shí)被調(diào)用,當(dāng)調(diào)用者與服務(wù)已經(jīng)綁定,多次調(diào)用Cntext.bindService方法并不會導(dǎo)致該方法被多次調(diào)用。 nUnbind只有采用Cntext.bindService方法啟動(dòng)服務(wù)時(shí)才會回調(diào)該方法。該方法在調(diào)用者與服務(wù)解除綁定時(shí)被調(diào)用 java vie plaincpyprint? 1. 采用Cntext. bindService方法啟動(dòng)服務(wù)的代碼如下: 2. public class HellActivity extends Activity 3. ServiceCnnectin cnn = ne Se
36、rviceCnnectin 4. public vid nServiceCnnected(CmpnentName name, IBinder ser vice) 5. 6. public vid nServiceDiscnnected(CmpnentName name) 7. 8. ; 9. verride 10. public vid nCreate(Bundle savedInstanceState) 1 1. Buttn buttn =(Buttn) this.findVieById(R.id.buttn); 1 2. buttn.setnClickListener(ne Vie.nCl
37、ickListener 1 3. public vid nClick(Vie v) 1 4. Intent intent = ne Intent(HellActivity.this, SMSService. class);篇四: Andrid面試題總結(jié)強(qiáng)勁版 (一) 自己總結(jié)的最強(qiáng)andrid應(yīng)用面試題集 1.activity的生命周期。 nCreate 在activity第一次被創(chuàng)建的時(shí)候調(diào)用。這里是你做所有初始化設(shè)置的地方創(chuàng)建視圖、綁定數(shù)據(jù)至列表等。如果曾經(jīng)有狀態(tài)記錄(參閱后述Saving Activity State。),則調(diào)用此否 nStart 方法時(shí)會傳入一個(gè)包含著此activity
38、以 前狀態(tài)的包對象做為參數(shù)。 總繼之以nStart。 nRestart 在activity停止后,在再次啟動(dòng)之前被調(diào)用。 總繼之以nStart。 當(dāng)activity正要變得為用戶所見時(shí)被調(diào) 用。 否 nStart nStart 當(dāng)activity轉(zhuǎn)向前臺時(shí)繼以 nResume,在activity變?yōu)殡[藏時(shí)繼 以nStp。 nResume 否 r nStp 在activity開始與用戶進(jìn)行交互之前被調(diào)用。此時(shí)activity位于堆棧頂部,并 nResume 接受用戶輸入。 否 nPause 繼之以nPause。 當(dāng)系統(tǒng)將要啟動(dòng)另一個(gè)activity時(shí)調(diào) 用。此方法主要用來將未保存的變化進(jìn) 行持久
39、化,停止類似動(dòng)畫這樣耗費(fèi)CPUnResume 的動(dòng)作等。這一切動(dòng)作應(yīng)該在短時(shí)間內(nèi)nPause 是 r 完成,因?yàn)橄乱粋€(gè)activity必須等到此nStp 方法返回后才會繼續(xù)。 當(dāng)activity重新回到前臺是繼以 nResume。當(dāng)activity變?yōu)橛脩舨豢?見時(shí)繼以nStp。 當(dāng)activity不再為用戶可見時(shí)調(diào)用此方 法。這可能發(fā)生在它被銷毀或者另一個(gè) activity(可能是現(xiàn)存的或者是新的) 回到運(yùn)行狀態(tài)并覆蓋了它。 如果activity再次回到前臺跟用戶交互 則繼以nRestart,如果關(guān)閉activity 則繼以nDestry。 nStp nRestart 是 r nDestry
40、 nDestry 在activity銷毀前調(diào)用。這是activity接收的最后一個(gè)調(diào)用。這可能發(fā)生在activity結(jié)束(調(diào)用了它的 finish 方法)或者因?yàn)橄到y(tǒng)需要是 nthing 空間所以臨時(shí)的銷毀了此acitivity的 實(shí)例時(shí)。你可以用isFinishing 方法 來區(qū)分這兩種情況。 2.橫豎屏切換時(shí)候activity的生命周期 1.不設(shè)置Activity的andrid:cnfigChanges時(shí),切屏?xí)匦抡{(diào)用各個(gè)生命周期,切橫屏?xí)r會執(zhí)行一次,切豎屏?xí)r會執(zhí)行兩次. 2.設(shè)置Activity的andrid:cnfigChanges= rientatin 時(shí),切屏還是會重新調(diào)用各個(gè)生
41、命周期,切橫、豎屏?xí)r只會執(zhí)行一次. 3.設(shè)置Activity的andrid:cnfigChanges= rientatin|keybardHidden 時(shí),切屏不會重新調(diào)用各個(gè)生命周期,只會執(zhí)行nCnfiguratinChanged方法. 4. 一條最長的短信息約占多少byte? 中文70(包括標(biāo)點(diǎn)),英文160個(gè)字節(jié)。 5.handler機(jī)制的原理 andrid提供了 Handler 和 Lper 來滿足線程間的通信。Handler 先進(jìn)先出原則。Lper類用來管理特定線程內(nèi)對象之間的消息交換(Message Exchange)。 1)Lper: 一個(gè)線程可以產(chǎn)生一個(gè)Lper對象,由它來管理
42、此線程里的 Message Queue(消息隊(duì)列)。 2)Handler: 你可以構(gòu)造Handler對象來與Lper溝通,以便push新消息到Message Queue里;或者接收Lper從Message Queue取出)所送來的消息。 3) Message Queue(消息隊(duì)列):用來存放線程放入的消息。 4)線程: UI thread 通常就是main thread,而Andrid啟動(dòng)程序時(shí)會替它建立一個(gè)Message Queue。 6.什么是嵌入式實(shí)時(shí)操作系統(tǒng), Andrid 操作系統(tǒng)屬于實(shí)時(shí)操作系統(tǒng)嗎? 嵌入式實(shí)時(shí)操作系統(tǒng)是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時(shí),能夠接受并以足夠快的速度予以處理,其
43、處理的結(jié)果又能在規(guī)定的時(shí)間之內(nèi)來控制生產(chǎn)過程或?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í)兩種,而andrid是基于linux內(nèi)核的,因此屬于軟實(shí)時(shí)。 7.andrid中線程與線程,進(jìn)程與進(jìn)程之間如何通信 1、一個(gè) Andrid 程序開始運(yùn)行時(shí),會單獨(dú)啟動(dòng)一個(gè)Prcess。 默認(rèn)情況下,所有這個(gè)程序中的Activity或者Service都會跑在這個(gè)Prcess。 默認(rèn)情況下,一個(gè)Andrid程序也只有一個(gè)Prcess,但一個(gè)Prcess下卻可以有許多個(gè)Thread。 2、一個(gè) Andrid 程序開始運(yùn)行時(shí),就有一個(gè)主線程Main T
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度二手房買賣合同智能家居系統(tǒng)升級與安裝服務(wù)協(xié)議3篇
- 2025版出納責(zé)任擔(dān)保及財(cái)務(wù)安全責(zé)任合同3篇
- 2025年度旅游民宿投資民間擔(dān)保合同范本4篇
- 物流公司2025年度網(wǎng)絡(luò)安全防護(hù)合同3篇
- 2024版技術(shù)研發(fā)合作合同
- 二零二五年度農(nóng)副產(chǎn)品種植基地建設(shè)與投資合同
- 2025版牛羊肉冷鏈物流信息化建設(shè)與運(yùn)營合同4篇
- 2025年度環(huán)保節(jié)能技術(shù)引進(jìn)與應(yīng)用實(shí)施合同2篇
- 二零二五年度模具采購合同與模具生產(chǎn)效率提升合同4篇
- 2025年度個(gè)人肖像權(quán)使用合同
- 鄉(xiāng)村治理中正式制度與非正式制度的關(guān)系解析
- 2024版義務(wù)教育小學(xué)數(shù)學(xué)課程標(biāo)準(zhǔn)
- 智能護(hù)理:人工智能助力的醫(yī)療創(chuàng)新
- 國家中小學(xué)智慧教育平臺培訓(xùn)專題講座
- 5G+教育5G技術(shù)在智慧校園教育專網(wǎng)系統(tǒng)的應(yīng)用
- 服務(wù)人員隊(duì)伍穩(wěn)定措施
- VI設(shè)計(jì)輔助圖形設(shè)計(jì)
- 淺談小學(xué)勞動(dòng)教育的開展與探究 論文
- 2023年全國4月高等教育自學(xué)考試管理學(xué)原理00054試題及答案新編
- 河北省大學(xué)生調(diào)研河北社會調(diào)查活動(dòng)項(xiàng)目申請書
- JJG 921-2021環(huán)境振動(dòng)分析儀
評論
0/150
提交評論