成年人在线观看视频免费,国产第2页,人人狠狠综合久久亚洲婷婷,精品伊人久久

我要投稿 投訴建議

最新android面試題

時(shí)間:2021-02-05 10:05:53 面試試題 我要投稿

2016年最新android面試題

  1.如何避免ANR?

2016年最新android面試題

  答:ANR:Application Not Responding,五秒在Android中,活動(dòng)管理器和窗口管理器這兩個(gè)系統(tǒng)服務(wù)負(fù)責(zé)監(jiān)視應(yīng)用程序的響應(yīng)。當(dāng)出現(xiàn)下列情況時(shí),Android就會(huì)顯示ANR對(duì)話框了:   對(duì)輸入事件(如按鍵、觸摸屏事件)的響應(yīng)超過5秒   意向接受器(intentReceiver)超過10秒鐘仍未執(zhí)行完畢

  Android應(yīng)用程序完全運(yùn)行在一個(gè)獨(dú)立的線程中(例如main)。這就意味著,任何在主線程中運(yùn)行的,需要消耗大量時(shí)間的操作都會(huì)引發(fā)ANR。因?yàn)榇藭r(shí),你的應(yīng)用程序已經(jīng)沒有機(jī)會(huì)去響應(yīng)輸入事件和意向廣播(Intent broadcast)。   因此,任何運(yùn)行在主線程中的方法,都要盡可能的只做少量的工作。特別是活動(dòng)生命周期中的重要方法如onCreate()和 onResume()等更應(yīng)如此。潛在的比較耗時(shí)的操作,如訪問網(wǎng)絡(luò)和數(shù)據(jù)庫;或者是開銷很大的計(jì)算,比如改變位圖的大小,需要在一個(gè)單獨(dú)的子線程中完成(或者是使用異步請(qǐng)求,如數(shù)據(jù)庫操作)。但這并不意味著你的主線程需要進(jìn)入阻塞狀態(tài)已等待子線程結(jié)束 -- 也不需要調(diào)用Therad.wait()或者Thread.sleep()方法。取而代之的是,主線程為子線程提供一個(gè)句柄(Handler),讓子線程在即將結(jié)束的時(shí)候調(diào)用它(xing:可以參看Snake的例子,這種方法與以前我們所接觸的有所不同)。使用這種方法涉及你的應(yīng)用程序,能夠保證你的程序?qū)斎氡3至己玫捻憫?yīng),從而避免因?yàn)檩斎胧录^5秒鐘不被處理而產(chǎn)生的ANR。這種實(shí)踐需要應(yīng)用到所有顯示用戶界面的線程,因?yàn)樗麄兌济媾R著同樣的超時(shí)問題。

  2. handler機(jī)制的原理

  答 :andriod提供了 Handler 和 Looper 來滿足線程間的通信。Handler 先進(jìn)先出原則。Looper類用來管理特定線程內(nèi)對(duì)象之間的消息交換(Message Exchange)! 1)Looper: 一個(gè)線程可以產(chǎn)生一個(gè)Looper對(duì)象,由它來管理此線程里的Message Queue(消息隊(duì)列)! 2)Handler: 你可以構(gòu)造Handler對(duì)象來與Looper溝通,以便push新消息到Message Queue里;或者接收Looper從Message Queue取出)所送來的消息。    3) Message Queue(消息隊(duì)列):用來存放線程放入的消息! 4)線程:UI thread 通常就是main thread,而Android啟動(dòng)程序時(shí)會(huì)替它建立一個(gè)Message Queue。

  3. Android引入廣播機(jī)制的用意?

  答:a:從MVC的角度考慮(應(yīng)用程序內(nèi)) 其實(shí)回答這個(gè)問題的時(shí)候還可以這樣問,android為什么要有那4大組件,現(xiàn)在的移動(dòng)開發(fā)模型基本上也是照搬的web那一套MVC架構(gòu),只不過是改了點(diǎn)嫁妝而已。android的四大組件本質(zhì)上就是為了實(shí)現(xiàn)移動(dòng)或者說嵌入式設(shè)備上的MVC架構(gòu),它們之間有時(shí)候是一種相互依存的關(guān)系,有時(shí)候又是一種補(bǔ)充關(guān)系,引入廣播機(jī)制可以方便幾大組件的信息和數(shù)據(jù)交互。   b:程序間互通消息(例如在自己的應(yīng)用程序內(nèi)監(jiān)聽系統(tǒng)來電)   c:效率上(參考UDP的廣播協(xié)議在局域網(wǎng)的方便性)   d:設(shè)計(jì)模式上(反轉(zhuǎn)控制的一種應(yīng)用,類似監(jiān)聽者模式)

  4.什么情況會(huì)導(dǎo)致Force Close ?如何避免?能否捕獲導(dǎo)致其的異常?

  答:一般像空指針啊,可以看起logcat,然后對(duì)應(yīng)到程序中 來解決錯(cuò)誤。

  5.如何將一個(gè)Activity設(shè)置成窗口的樣式。

  講點(diǎn)輕松的吧,可能有人希望做出來的應(yīng)用程序是一個(gè)漂浮在手機(jī)主界面的東西,那么很   簡(jiǎn)單你只需要設(shè)置 一下Activity的主題就可以了在AndroidManifest.xml 中定義 Activity的   地方一句話:   Xml代碼   1. android :theme="@android:style/Theme.Dialog"   3. android:theme="@android:style/Theme.Dialog"   android :theme="@android:style/Theme.Dialog"   android:theme="@android:style/Theme.Dialog"   這就使你的應(yīng)用程序變成對(duì)話框的形式彈出來了,或者   Xml代碼   1. android:theme="@android:style/Theme.Translucent"   3. android:theme="@android:style/Theme.Translucent"   就變成半透明的,[友情提示-.-]類似的這種activity的屬性可以在android.R.styleable 類的AndroidManifestActivity 方法中看到,AndroidManifest.xml中所有元素的屬性的介紹都可以參考這個(gè)類android.R.styleable   上面說的.是屬性名稱,具體有什么值是在android.R.style中 可以看到,比如這個(gè)"@android:style/Theme.Dialog" 就對(duì)應(yīng)于android.R.style.Theme_Dialog ,('_'換成'.' < --注意:這個(gè)是文章內(nèi)容不是笑臉)就可以用在描述文件 中了,找找類定義和描述文件中的對(duì)應(yīng)關(guān)系就都明白了。

  (簡(jiǎn)單來說直接在配置文件引入風(fēng)格。追求效果的應(yīng)用此用法用到挺多);

  6、IntentService有何優(yōu)點(diǎn)?

  Acitivity的進(jìn)程,當(dāng)處理Intent的時(shí)候,會(huì)產(chǎn)生一個(gè)對(duì)應(yīng)的Service Android的進(jìn)程處理器現(xiàn)在會(huì)盡可能的不kill掉你 非常容易使用

  (這回答其實(shí)比較。。。其實(shí)我也不知道干嘛使,因?yàn)榭磶椭臋n就說了一個(gè)用來處理異步請(qǐng)求的service,工作完了自己停止。沒用過,不做評(píng)價(jià))。

  7、 廣播的生命周期?

  廣播的生命周期非常端,當(dāng)發(fā)送之后intent會(huì)到AndroidManifest.xml方法中找是不是匹配的action,如果有就調(diào)用Receiver,然后獲得Receiver對(duì)象,再執(zhí)行onReceiver方法,這時(shí)候Receiver對(duì)象就沒有用了,當(dāng)我們?cè)俅吸c(diǎn)擊按鈕的時(shí)候就會(huì)重新獲得對(duì)象,這就是BroadcastReceiver的生命周期。

  在BroadcastReceiver里不能做一些比較耗時(shí)的操作,否則會(huì)彈出ANR(Application No Response)的對(duì)話框。

  如果需要完成一項(xiàng)耗時(shí)的工作,應(yīng)該通過發(fā)送Intent給Service,由Service來完成。這里不能使用子線程來解決,因?yàn)锽roadcastReceiver的生命周期很短,子線程可能還沒有結(jié)束,BroadcastReceiver就先結(jié)束了。BroadcastReceiver一旦結(jié)束,此時(shí)BroadcastReceiver的所在線程很容易在系統(tǒng)需要內(nèi)存時(shí)被優(yōu)先殺死,因?yàn)樗鼘儆诳者M(jìn)程(沒有任何活動(dòng)組件的進(jìn)程)。如果它的宿主進(jìn)程被殺死,那么正在工作的子線程也會(huì)被殺死,所以采用子線程來解決是不可靠的。

  8、啟動(dòng)service的兩種方法?有什么區(qū)別?

  一種是startService(),另一種是bindService()。這兩者的區(qū)別是第一種方式調(diào)用者開啟了服務(wù),即會(huì)與服務(wù)失去聯(lián)系,兩者沒有關(guān)聯(lián)。即使訪問者退出了,服務(wù)仍在運(yùn)行。如需解除服務(wù)必須顯式的調(diào)用stopService方法。主要用于調(diào)用者與服務(wù)沒有交互的情況下,也就是調(diào)用者不需要獲取服務(wù)里的業(yè)務(wù)方法。比如電話錄音。而后者調(diào)用者與服務(wù)綁定在一起的。當(dāng)調(diào)用者退出的時(shí)候,服務(wù)也隨之退出。用于需要與服務(wù)交互。

【2016年最新android面試題】相關(guān)文章:

最新android面試題及答案11-07

android面試題及答案精選11-12

最新競(jìng)爭(zhēng)上崗面試題10-01

最新JAVA實(shí)現(xiàn)鏈表面試題10-24

最新關(guān)于精選php面試題及答案08-07

最新特崗教師面試題及答案參考05-28

最新事業(yè)單位面試題及答案05-12

最新招聘社區(qū)工作者面試題及答案02-26

德爾福面試題01-11

移動(dòng)面試題04-01