![Android面試題總結(jié)強(qiáng)勁版二_第1頁](http://file4.renrendoc.com/view/a111839f6c935bd26a6c15215835dba2/a111839f6c935bd26a6c15215835dba21.gif)
![Android面試題總結(jié)強(qiáng)勁版二_第2頁](http://file4.renrendoc.com/view/a111839f6c935bd26a6c15215835dba2/a111839f6c935bd26a6c15215835dba22.gif)
![Android面試題總結(jié)強(qiáng)勁版二_第3頁](http://file4.renrendoc.com/view/a111839f6c935bd26a6c15215835dba2/a111839f6c935bd26a6c15215835dba23.gif)
![Android面試題總結(jié)強(qiáng)勁版二_第4頁](http://file4.renrendoc.com/view/a111839f6c935bd26a6c15215835dba2/a111839f6c935bd26a6c15215835dba24.gif)
![Android面試題總結(jié)強(qiáng)勁版二_第5頁](http://file4.renrendoc.com/view/a111839f6c935bd26a6c15215835dba2/a111839f6c935bd26a6c15215835dba25.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
android面試題總結(jié)力□弓雖版(二)(轉(zhuǎn)自CSDN)轉(zhuǎn)載地址:16.Android常用控件的信息單選框(RadioButton及RadioGroup):RadioGroup用于對單選框進(jìn)行分組,相同組內(nèi)的單選框只有一個單選框被選中。事務(wù):setOnCheckedChangeListener(),處理單選框被選擇事務(wù)。把RadioGroup.OnCheckedChangeListener實例作為參數(shù)傳入。多選框(CheckBox):每個多選框都是獨立的,可以通過迭代全部的多選框,然后依據(jù)其狀態(tài)是否被選中在獲得其值。事務(wù):setOnCheckChangeListener()處理多選框被選擇事務(wù)。把CompoundButton.OnCheckedChangeListener實例作為參數(shù)傳入下拉列表框(Spring):Spinner.getltemAtPosition(Spinner.getSelectedltemPositionO);獲得下拉列表框的值。ListView針對List中每個item,要求adapter“給我一個視圖”(getView)o一個新的視圖被返回并顯示假如我們有上億個項目要顯示怎么辦?為每個項目創(chuàng)建一個新視圖?NO!這不行能!事實上Android為你緩存了視圖。Android中有個叫做Recycler的構(gòu)件,下圖是他的工作原理:假如你有10億個項目(item),其中只有可見的項目存在內(nèi)存中,其他的在Recycler中。.ListView先懇求一個typel視圖(getView)然后懇求其他可見的項目。convertView在getView中是空(null)的。.當(dāng)iteml滾出屏幕,并且一個新的項目從屏幕低端上來時,ListView再懇求一個typel視圖。convertView此時不是空值了,它的值是iteml。你只需設(shè)定新的數(shù)據(jù)然后返回convertView,不必重新創(chuàng)建一個視圖。20廣播接收者生命周期一個廣播接收者有一個回調(diào)方法:voidonReceive(ContextcurContext,IntentbroadcastMsg)0當(dāng)一個廣播消息到達(dá)接收者是,Android調(diào)用它的onReceive()方法并傳遞給它包含消息的Intent對象。廣播接收者被認(rèn)為僅當(dāng)它執(zhí)行這個方法時是活躍的。當(dāng)onReceive()返回后,它是不活躍的。有一個活躍的廣播接收者的進(jìn)程是受愛護(hù)的,不會被殺死。但是系統(tǒng)可以在任何時候殺死僅有不活躍組件的進(jìn)程,當(dāng)占用的內(nèi)存別的進(jìn)程須要時。這帶來一個問題,當(dāng)一個廣播消息的響應(yīng)時費時的,因此應(yīng)當(dāng)在獨立的線程中做這些事,遠(yuǎn)離用戶界面其它組件運行的主線程。假如。nReceiveO衍生線程然后返回,整個進(jìn)程,包括新的線程,被判定為不活躍的(除非進(jìn)程中的其它應(yīng)用程序組件是活躍的),將使它處于被殺的危機(jī)。解決這個問題的方法是。nReceiveO啟動一個服務(wù),剛好服務(wù)做這個工作,因此系統(tǒng)知道進(jìn)程中有活躍的工作在做。設(shè)計模式和IoC(限制反轉(zhuǎn))Android框架魅力的源泉在于IoC,在開發(fā)Android的過程中你會時刻感受到IoC帶來的巨大便利,就拿Activity來說,下面的函數(shù)是框架調(diào)用自動調(diào)用的:protectedvoidonCreate(BundlesavedlnstanceState);不是程序編寫者主動去調(diào)用,反而是用戶寫的代碼被框架調(diào)用,這也就反轉(zhuǎn)了!當(dāng)然IoC本身的內(nèi)涵遠(yuǎn)遠(yuǎn)不止這些,但是從這個例子中也可以窺視出IoC帶來的巨大好處。此類的例子在Android隨處可見,例如說數(shù)據(jù)庫的管理類,例如說Android中SAX的Handler的調(diào)用等。有時候,您甚至須要自己編寫簡單的IoC實現(xiàn),上面展示的多線程現(xiàn)在就是一個說明。Android中的長度單位詳解現(xiàn)在這里介紹一下dp和sp。dp也就是dip。這個和sp基本類似。假如設(shè)置表示長度、高度等屬性時可以運用dp或sp。但假如設(shè)置字體,須要運用sp。dp是及密度無關(guān),sp除了及密度無關(guān)外,還及scale無關(guān)。假如屏幕密度為160,這時dp和sp和px是一樣的。Idp=lsp=lpx,但假如運用px作單位,假如屏幕大小不變(假設(shè)還是3.2寸),而屏幕密度變成了320。那么原來TextView的寬度設(shè)成160px,在密度為320的3.2寸屏幕里看要比在密度為160的3.2寸屏幕上看短了一半。但假如設(shè)置成160dp或160sp的話。系統(tǒng)會自動將width屬性值設(shè)置成320Px的。也就是160*320/160。其中320/160可稱為密度比例因子。也就是說,假如運用dp和sp,系統(tǒng)會依據(jù)屏幕密度的變更自動進(jìn)行轉(zhuǎn)換。下面看一下其他單位的含義PX:表示屏幕實際的象素。例如,320*480的屏幕在橫向有320個象素,在縱向有480個象素。in:表示英寸,是屏幕的物理尺寸。每英寸等于2.54厘米。例如,形容手機(jī)屏幕大小,常常說,3.2(英)寸、3.5(英)寸、4(英)寸就是指這個單位。這些尺寸是屏幕的對角線長度。假如手機(jī)的屏幕是3.2英寸,表小手機(jī)的屏幕(可視區(qū)域)對角線長度是3.2*2.54=8.128厘米。讀者可以去量一量自己的手機(jī)屏幕,看和實際的尺寸是否一樣。4種activity的啟動模式standard:標(biāo)準(zhǔn)模式,一調(diào)用startActivity()方法就會產(chǎn)生一個新的實例。singleTop:假如已經(jīng)有一個實例位于Activity棧的頂部時,就不產(chǎn)生新的實例,而只是調(diào)用Activity中的newlnstance()方法。假如不位于棧頂,會產(chǎn)生一個新的實例。singleTask:會在一個新的task中產(chǎn)生這個實例,以后每次調(diào)用都會運用這個,不會去產(chǎn)生新的實例了。singlelnstance:這個跟singleTask基本上是一樣,只有一個區(qū)分:在這個模式下的Activity實例所處的task中,只能有這個activity實例,不能有其他的實例。什么是ANR如何避開它?ANR:ApplicationNotResponding,五秒在Android中,活動管理器和窗口管理器這兩個系統(tǒng)服務(wù)負(fù)責(zé)監(jiān)視應(yīng)用程序的響應(yīng)。當(dāng)出現(xiàn)下列狀況時,Android就會顯示ANR對話框了:對輸入事務(wù)(如按鍵、觸摸屏事務(wù))的響應(yīng)超過5秒意向接受器(intentReceiver)超過10秒鐘仍未執(zhí)行完畢Android應(yīng)用程序完全運行在一個獨立的線程中(例如main)o這就意味著,任何在主線程中運行的,須要消耗大量時間的操作都會引發(fā)ANR。因為此時,你的應(yīng)用程序已經(jīng)沒有機(jī)會去響應(yīng)輸入事務(wù)和意向廣播(Intentbroadcast)。因此,任何運行在主線程中的方法,都要盡可能的只做少量的工作。特殊是活動生命周期中的重要方法如onCreateO和onResume()等更應(yīng)如此。潛在的比較耗時的操作,如訪問網(wǎng)絡(luò)和數(shù)據(jù)庫;或者是開銷很大的計算,比如變更位圖的大小,須要在一個單獨的子線程中完成(或者是運用異步懇求,如數(shù)據(jù)庫操作)。但這并不意味著你的主線程須要進(jìn)入堵塞狀態(tài)已等待子線程結(jié)束一也不須要調(diào)用Therad.waitO或者Thread,sleep。方法。取而代之的是,主線程為子線程供應(yīng)一個句柄(Handler),讓子線程在即將結(jié)束的時候調(diào)用它(xing:可以參看Snake的例子,這種方法及以前我們所接觸的有所不同)。運用這種方法涉及你的應(yīng)用程序,能夠保證你的程序?qū)斎氡3至己玫捻憫?yīng),從而避開因為輸入事務(wù)超過5秒鐘不被處理而產(chǎn)生的ANRo這種實踐須要應(yīng)用到全部顯示用戶界面的線程,因為他們都面臨著同樣的超時問題。AndroidIntent的運用在一個Android應(yīng)用中,主要是由一些組件組成,(Activity,Service,ContentProvider,etc.)在這些組件之間的通訊中,由Intent幫助完成。正如網(wǎng)上一些人解析所說,Intent負(fù)責(zé)對應(yīng)用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則依據(jù)此Intent的描述,負(fù)責(zé)找到對應(yīng)的組件,將Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。Intent在這里起著實現(xiàn)調(diào)用者及被調(diào)用者之間的解耦作用。Intent傳遞過程中,要找到目標(biāo)消費者(另一個Activity,IntentReceiver或Service),也就是Intent的響應(yīng)者,有兩種方法來匹配:1,顯示匹配(Explicit):[java]viewplaincopyprint?publicTestBextentsActivity();publicclassTestextendsActivity(publicvoidswitchActivity()(Intenti=newIntent(Test,this,TestB.class);n. this.startActivity(i);))代碼簡潔明白,執(zhí)行了switchActivity()函數(shù),就會立刻跳轉(zhuǎn)到名為TestB的Activity中。2,隱式匹配(Implicit): 隱式匹配,首先要匹配Intent的幾項值:Action,Category,Data/Type,Component假如填寫了Componet就是上例中的Test,class)這就形成了顯示匹配。所以此部分只講前幾種匹配。匹配規(guī)則為最大匹配規(guī)則,1,假如你填寫了Action,假如有一個程序的Manifest,xml中的某一個Activity的IntentFilter段中定義了包含了相同的Action那么這個Intent就及這個目標(biāo)Action匹配,假如這個Filter段中沒有定義Type,Category,那么這個Activity就匹配了。但是假如手機(jī)中有兩個以上的程序匹配,那么就會彈出一個對話可框來提示說明。Action的值在Android中有許多預(yù)定義,假如你想干脆轉(zhuǎn)到你自己定義的Intent接收者,你可以在接收者的IntentFilter中加入一個自定義的Action值(同時要設(shè)定Category值為""android,intent,category.DEFAULT"),在你的Intent中設(shè)定該值為Intent的Action,就干脆能跳轉(zhuǎn)到你自己的Intent接收者中。因為這個Action在系統(tǒng)中是唯一的。2,data/type,你可以用Uri來做為data,比如Uriuri=Uri.parse();Intenti=newIntent(Intent.ACTI0N_VIEW,uri);手機(jī)的Intent分發(fā)過程中,會依據(jù)的scheme推斷出數(shù)據(jù)類型type手機(jī)的Brower則能匹配它,在Brower的Manifest,xml中的IntenFilter中首先有ACTION_VIEWAction,也能處理:的type,3,至于分類Category,一般不要去在Intent中設(shè)置它,假如你寫Intent的接收者,就在Manifest,xml的Activity的IntentFilter中包含android,category.DEFAULT,這樣全部不設(shè)置Category(Intent.addCategory(Stringc);)的Intent都會及這個Category匹配。4,extras(附加信息),是其它全部附加信息的集合。運用extras可以為組件供應(yīng)擴(kuò)展信息,比如,假如要執(zhí)行“發(fā)送電子郵件”這個動作,可以將電子郵件的標(biāo)題、正文等保存在extras里,傳給電子郵件發(fā)送組件。轉(zhuǎn)載地址:事務(wù):setOnltemSelectedListener(),處理下拉列表框被選擇事務(wù)把AdapterView.OnltemSelectedListener實例作為參數(shù)傳入;拖動條(SeekBar):SeekBar.getProgress()獲得拖動條當(dāng)前值事務(wù):setOnSeekBarChangeListener(),處理拖動條值變更事務(wù),把SeekBar.OnSeekBarChangeListener實例作為參數(shù)傳入。菜單(Menu):重寫Activity的onCreatOptionMenu(Menumenu)方法,該方法用于創(chuàng)建選項菜單,咋用戶按下手機(jī)的〃Menu〃按鈕時就會顯示創(chuàng)建好的菜單,在onCreatOptionMenu(MenuMenu)方法內(nèi)部可以調(diào)用Menu,add()方法實現(xiàn)菜單的添加。重寫Activity的onMenuItemSelected()方法,該方法用于處理菜單被選擇事務(wù)。進(jìn)度對話框(ProgressDialog):創(chuàng)建并顯示一個進(jìn)度對話框:ProgressDialog.show(ProgressDialogActivity.this,〃請稍等〃,〃數(shù)據(jù)正在加載中????〃,true);設(shè)置對話框的風(fēng)格:setProgressStyle()ProgressDialog.STYLE_SPINNER 旋轉(zhuǎn)進(jìn)度條風(fēng)格(為默認(rèn)風(fēng)格)ProgressDialog.STYLE_HORIZONTAL橫向進(jìn)度條風(fēng)格17.請介紹下Android中常用的五種布局Android布局是應(yīng)用界面開發(fā)的重要一環(huán),在Android中,共有五種布局方式,分別是:FrameLayout(框架布局),LinearLayout(線性布局),AbsoluteLayout(肯定布局),RelativeLayout(相對布局),TableLayout(表格布局)。.FrameLayout這個布局可以看成是墻腳堆東西,有一個四方的矩形的左上角墻腳,我們放了第一個東西,要再放一個,那就在放在原來放的位置的上面,這樣依次的放,會蓋住原來的東西。這個布局比較簡潔,也只能放一點比較簡潔的東西。LinearLayout線性布局,這個東西,從外框上可以理解為一個div,他首先是一個一個從上往下排列在屏幕上。每一個LinearLayout里面又可分為垂直布局 (android:orientalion二〃vertical")和水平布局(android:orientation二〃horizontal")。當(dāng)垂直布局時,每一行就只
有一個元素,多個元素依次垂直往下;水平布局時,只有一行,每一個元素依次向右排列。linearLayout中有一個重要的屬性android:layout_weight=〃1”,這個weight在垂直布局時,代表行距;水平的時候代表列寬;weight值越大就越大。AbsoluteLayout肯定布局如同div指定了absolute屬性,用X,Y坐標(biāo)來指定元素的位置android:layout_x=〃20px〃android:layout_y=,,12px,/這種布局方式也比較簡潔,但是在垂直隨意切換時,往往會出問題,而且多個元素的時候,計算比較麻煩。RelativeLayout相對布局可以理解為某一個元素為參照物,來定位的布局方式。主要屬性有:相對于某一個元素android:layout_below=,,@id/aaa/,該元素在id為aaa的下面android:layout_toLeftOf=,,@id/bbb,/改元素的左邊是bbb相對于父元素的地方android:layout_alignParentLeft=/,true,z在父元素左對android:layout_alignParentRight二〃true”在父元素右對齊還可以指定邊距等,詳細(xì)詳見APITabieLayout表格布局類似Html里面的Table。每一個TableLayout里面有表格行TableRow,TableRow里面可以詳細(xì)定義每一個元素,設(shè)定他的對齊方式android:gravity二〃〃。每一個布局都有自己適合的方式,另外,這五個布局元素可以相互嵌套應(yīng)用,做出美觀的界面。18.如何啟用Service,如何停用ServiceAndroid中的服務(wù)和windows中的服務(wù)是類似的東西,服務(wù)一般沒有用戶操作界面,它運行于系統(tǒng)中不簡潔被用戶發(fā)覺,可以運用它開發(fā)如監(jiān)控之類的程序。服務(wù)的開發(fā)比較簡潔,如下:第一步:繼承Service類publicclassSMSServiceextendsService{其次步:在AndroidManifest.xml文件中的〈application〉節(jié)點里對服務(wù)進(jìn)行配置:<serviceandroid:name=SMSService”/>服務(wù)不能自己運行,須要通過調(diào)用Context.startService()或Context.bindService()方法啟動服務(wù)。這兩個方法都可以啟動Service,但是它們的運用場合有所不同。運用startService()方法啟用服務(wù),調(diào)用者及服務(wù)之間沒有關(guān)連,即使調(diào)用者退出了,服務(wù)仍舊運行。運用bindService()方法啟用服務(wù),調(diào)用者及服務(wù)綁定在了一起,調(diào)用者一旦退出,服務(wù)也就終止,大有“不求同時生,必需同時死”的特點。假如準(zhǔn)備采納Context.startService。方法啟動服務(wù),在服務(wù)未被創(chuàng)建時,系統(tǒng)會先調(diào)用服務(wù)的。nCreateO方法,接著調(diào)用。nStart()方法。假如調(diào)用startService。方法前服務(wù)已經(jīng)被創(chuàng)建,多次調(diào)用startService()方法并不會導(dǎo)致多次創(chuàng)建服務(wù),但會導(dǎo)致多次調(diào)用onStartO方法。采納startService()方法啟動的服務(wù),只能調(diào)用Context.stopService()方法結(jié)束服務(wù),服務(wù)結(jié)束時會調(diào)用onDestroy()方法。假如準(zhǔn)備采納Context.bindService()方法啟動服務(wù),在服務(wù)未被創(chuàng)建時,系統(tǒng)會先調(diào)用服務(wù)的onCreate。方法,接著調(diào)用onBind()方法。這個時候調(diào)用者和服務(wù)綁定在一起,調(diào)用者退出了,系統(tǒng)就會先調(diào)用服務(wù)的onUnbind()方法,接著調(diào)用onDestroy()方法。假如調(diào)用bindService()方法前服務(wù)已經(jīng)被綁定,多次調(diào)用bindService。方法并不會導(dǎo)致多次創(chuàng)建服務(wù)及綁定(也就是說onCreate()和onBind()方法并不會被多次調(diào)用)。假如調(diào)用者希望及正在綁定的服務(wù)解除綁定,可以調(diào)用unbindService()方法,調(diào)用該方法也會導(dǎo)致系統(tǒng)調(diào)用服務(wù)的onUnbind()-->onDestroy()方法。服務(wù)常用生命周期回調(diào)方法如下:onCreate()該方法在服務(wù)被創(chuàng)建時調(diào)用,該方法只會被調(diào)用一次,無論調(diào)用多少次startService()或bindService()方法,服務(wù)也只被創(chuàng)建一次。onDestroy()該方法在服務(wù)被終止時調(diào)用。及采納Context.startService()方法啟動服務(wù)有關(guān)的生命周期方法onStart()只有采納Context.startService()方法啟動服務(wù)時才會回調(diào)該方法。該方法在服務(wù)起先運行時被調(diào)用。多次調(diào)用startService。方法盡管不會多次創(chuàng)建服務(wù),但。nStartO方法會被多次調(diào)用。及采納Context.bindS
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年二手房交易保障資金協(xié)議
- 2025年雙方自愿解除勞動合同書范例
- 2025年信用卡還款授權(quán)服務(wù)合同
- 2025年中國物流服務(wù)提供商戰(zhàn)略合作協(xié)議
- 海運客運合同法律體系2025年分析
- 2025年企業(yè)債評級擔(dān)保合同標(biāo)準(zhǔn)格式
- 2025年創(chuàng)新知識產(chǎn)權(quán)合資企業(yè)協(xié)議
- 2025年房產(chǎn)遺產(chǎn)繼承人與遺囑執(zhí)行人策劃協(xié)議
- 2025年伙伴間的房產(chǎn)共有合同規(guī)范
- 2025年企業(yè)股權(quán)交易合同樣本(官方版)
- (完整版)施工組織設(shè)計范本
- 二年級口算題大全1000道(打印版)
- 年終總結(jié)總經(jīng)理講話
- 2024年事業(yè)單位考試(綜合管理類A類)綜合應(yīng)用能力試題及解答參考
- 2024-2025學(xué)年北師大版數(shù)學(xué)八年級上冊期末綜合測試卷
- 培訓(xùn)機(jī)構(gòu)校區(qū)管理規(guī)劃
- DBJ41-T 246-2021 河南省超低能耗公共建筑節(jié)能設(shè)計標(biāo)準(zhǔn) 河南省工程建設(shè)標(biāo)準(zhǔn)(住建廳版)
- 新能源發(fā)電技術(shù) 電子課件 2.5 可控核聚變及其未來利用方式
- 2024年浙江省中考英語試題卷(含答案)
- 三年級下冊 道德與法治 全冊教案
- 檢驗科降低檢測報告超時率PDCA持續(xù)改進(jìn)案例
評論
0/150
提交評論