freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

android面試整里大全(編輯修改稿)

2025-06-09 18:18 本頁面
 

【文章內(nèi)容簡介】 receive android:name=.IningSMSReceiver intentfilter action android:name=)intentfilterreceiver第二種使用代碼進行注冊如:IntentFilter filter = new IntentFilter()。IningSMSReceiver receiver = new IngSMSReceiver()。registerReceiver()。兩種注冊類型的區(qū)別是:1)第一種不是常駐型廣播,也就是說廣播跟隨程序的生命周期。2)第二種是常駐型,也就是說當(dāng)應(yīng)用程序關(guān)閉后,如果有信息廣播來,程序也會被系統(tǒng)調(diào)用自動運行。1 請解釋下在單線程模型中Message、Handler、Message Queue、Looper之間的關(guān)系。答:簡單的說,Handler獲取當(dāng)前線程中的looper對象,looper用來從存放Message的MessageQueue中取出Message,再有Handler進行Message的分發(fā)和處理.Message Queue(消息隊列):用來存放通過Handler發(fā)布的消息,通常附屬于某一個創(chuàng)建它的線程,()得到當(dāng)前線程的消息隊列Handler:可以發(fā)布或者處理一個消息或者操作一個Runnable,通過Handler發(fā)布消息,消息將只會發(fā)送到與它關(guān)聯(lián)的消息隊列,然也只能處理該消息隊列中的消息Looper:是Handler和消息隊列之間通訊橋梁,程序組件首先通過Handler把消息傳遞給Looper,Looper把消息放入隊列。Looper也把消息隊列里的消息廣播給所有的Handler:Handler接受到消息后調(diào)用handleMessage進行處理Message:消息的類型,在Handler類中的handleMessage方法中得到單個的消息進行處理在單線程模型下,為了線程通信問題,Android設(shè)計了一個Message Queue(消息隊列), 線程間可以通過該Message Queue并結(jié)合Handler和Looper組件進行信息交換。下面將對它們進行分別介紹:1. Message Message消息,理解為線程間交流的信息,處理數(shù)據(jù)后臺線程需要更新UI,則發(fā)送Message內(nèi)含一些數(shù)據(jù)給UI線程。2. Handler Handler處理者,是Message的主要處理者,負(fù)責(zé)Message的發(fā)送,Message內(nèi)容的執(zhí)行處理。后臺線程就是通過傳進來的 Handler對象引用來sendMessage(Message)。而使用Handler,需要implement 該類的 handleMessage(Message)方法,它是處理這些Message的操作內(nèi)容,例如Update UI。通常需要子類化Handler來實現(xiàn)handleMessage方法。3. Message Queue Message Queue消息隊列,用來存放通過Handler發(fā)布的消息,按照先進先出執(zhí)行。 每個message queue都會有一個對應(yīng)的Handler。Handler會向message queue通過兩種方法發(fā)送消息:sendMessage或post。這兩種消息都會插在message queue隊尾并按先進先出執(zhí)行。但通過這兩種方法發(fā)送的消息執(zhí)行的方式略有不同:通過sendMessage發(fā)送的是一個message對象,會被 Handler的handleMessage()函數(shù)處理;而通過post方法發(fā)送的是一個runnable對象,則會自己執(zhí)行。4. Looper Looper是每條線程里的Message Queue的管家。Android沒有Global的Message Queue,而Android會自動替主線程(UI線程)建立Message Queue,但在子線程里并沒有建立Message Queue。()得到的主線程的Looper不為NULL,() 得到當(dāng)前線程的Looper就有可能為NULL。對于子線程使用Looper,API Doc提供了正確的使用方法:這個Message機制的大概流程: 1. ()方法運行開始后,循環(huán)地按照接收順序取出Message Queue里面的非NULL的Message。 2. 一開始Message Queue里面的Message都是NULL的。(Message)到Message Queue,該函數(shù)里面設(shè)置了那個Message對象的target屬性是當(dāng)前的Handler對象。隨后Looper取出了那個Message,則調(diào)用 該Message的target指向的Hander的dispatchMessage函數(shù)對Message進行處理。在dispatchMessage方法里,如何處理Message則由用戶指定,三個判斷,優(yōu)先級從高到低: 1) Message里面的Callback,一個實現(xiàn)了Runnable接口的對象,其中run函數(shù)做處理工作; 2) Handler里面的mCallback指向的一個實現(xiàn)了Callback接口的對象,由其handleMessage進行處理; 3) 處理消息Handler對象對應(yīng)的類繼承并實現(xiàn)了其中handleMessage函數(shù),通過這個實現(xiàn)的handleMessage函數(shù)處理消息。 由此可見,我們實現(xiàn)的handleMessage方法是優(yōu)先級最低的! 3. Handler處理完該Message (update UI) 后,Looper則設(shè)置該Message為NULL,以便回收! 在網(wǎng)上有很多文章講述主線程和其他子線程如何交互,傳送信息,最終誰來執(zhí)行處理信息之類的,個人理解是最簡單的方法——判斷Handler對象里面的Looper對象是屬于哪條線程的,則由該線程來執(zhí)行! 1. 當(dāng)Handler對象的構(gòu)造函數(shù)的參數(shù)為空,則為當(dāng)前所在線程的Looper; 2. ()得到的是主線程的Looper對象,()得到的是當(dāng)前線程的Looper對象。1 簡要解釋一下activity、 intent 、intent filter、service、Broadcase、BroadcaseReceiver答:一個activity呈現(xiàn)了一個用戶可以操作的可視化用戶界面;一個service不包含可見的用戶界面,而是在后臺運行,可以與一個activity綁定,通過綁定暴露出來接口并與其進行通信;一個broadcast receiver是一個接收廣播消息并做出回應(yīng)的ponent,broadcast receiver沒有界面;一個intent是一個Intent對象,它保存了消息的內(nèi)容。對于activity和service來說,它指定了請求的操作名稱和待操作數(shù)據(jù)的URI,Intent對象可以顯式的指定一個目標(biāo)ponent。如果這樣的話,android會找到這個ponent(基于manifest文件中的聲明)并激活它。但如果一個目標(biāo)不是顯式指定的,android必須找到響應(yīng)intent的最佳ponent。它是通過將Intent對象和目標(biāo)的intent filter相比較來完成這一工作的;一個ponent的intent filter告訴android該ponent能處理的intent。intent filter也是在manifest文件中聲明的。1 說說mvc模式的原理,它在android中的運用,android的官方建議應(yīng)用程序的開發(fā)采用mvc模式。何謂mvc?mvc是model,view,controller的縮寫,mvc包含三個部分:  模型(model)對象:是應(yīng)用程序的主體部分,所有的業(yè)務(wù)邏輯都應(yīng)該寫在該層。  視圖(view)對象:是應(yīng)用程序中負(fù)責(zé)生成用戶界面的部分。也是在整個mvc架構(gòu)中用戶唯一可以看到的一層,接收用戶的輸入,顯示處理結(jié)果?! 】刂破鳎╟ontrol)對象:是根據(jù)用戶的輸入,控制用戶界面數(shù)據(jù)顯示及更新model對象狀態(tài)的部分,控制器更重要的一種導(dǎo)航功能,響應(yīng)用戶出發(fā)的相關(guān)事件,交給m層處理?! ndroid鼓勵弱耦合和組件的重用,在android中mvc的具體體現(xiàn)如下:  1)視圖層(view):一般采用xml文件進行界面的描述,使用的時候可以非常方便的引入,當(dāng)然,如果你對android了解的比較的多了話,就一定可以想到在android中也可以使用javascript+html等的方式作為view層,當(dāng)然這里需要進行java和javascript之間的通信,幸運的是,android提供了它們之間非常方便的通信實現(xiàn)?! ?)控制層(controller):android的控制層的重任通常落在了眾多的acitvity的肩上,這句話也就暗含了不要在acitivity中寫代碼,要通過activity交割model業(yè)務(wù)邏輯層處理,這樣做的另外一個原因是android中的acitivity的響應(yīng)時間是5s,如果耗時的操作放在這里,程序就很容易被回收掉?! ?)模型層(model):對數(shù)據(jù)庫的操作、對網(wǎng)絡(luò)等的操作都應(yīng)該在model里面處理,當(dāng)然對業(yè)務(wù)計算等操作也是必須放在的該層的。1 什么是ANR 如何避免它?答:ANR:Application Not Responding。在Android中,活動管理器和窗口管理器這兩個系統(tǒng)服務(wù)負(fù)責(zé)監(jiān)視應(yīng)用程序的響應(yīng),當(dāng)用戶操作的在5s內(nèi)應(yīng)用程序沒能做出反應(yīng),BroadcastReceiver在10秒內(nèi)沒有執(zhí)行完畢,就會出現(xiàn)應(yīng)用程序無響應(yīng)對話框,這既是ANR。避免方法:Activity應(yīng)該在它的關(guān)鍵生命周期方法(如onCreate()和onResume())里盡可能少的去做創(chuàng)建操作。潛在的耗時操作,例如網(wǎng)絡(luò)或數(shù)據(jù)庫操作,或者高耗時的計算如改變位圖尺寸,應(yīng)該在子線程里(或者異步方式)來完成。主線程應(yīng)該為子線程提供一個Handler,以便完成時能夠提交給主線程。1 什么情況會導(dǎo)致Force Close ?如何避免?能否捕獲導(dǎo)致其的異常?答:程序出現(xiàn)異常,比如nullpointer。避免:編寫程序時邏輯連貫,思維縝密。能捕獲異常,在logcat中能看到異常信息 描述一下android的系統(tǒng)架構(gòu)android系統(tǒng)架構(gòu)分從下往上為linux 內(nèi)核層、運行庫、應(yīng)用程序框架層、和應(yīng)用程序?qū)?。linuxkernel:負(fù)責(zé)硬件的驅(qū)動程序、網(wǎng)絡(luò)、電源、系統(tǒng)安全以及內(nèi)存管理等功能。libraries和 android runtime:libraries:即c/c++函數(shù)庫部分,大多數(shù)都是開放源代碼的函數(shù)庫,例如webkit(引擎),該函數(shù)庫負(fù)責(zé) android網(wǎng)頁瀏覽器的運行,例如標(biāo)準(zhǔn)的c函數(shù)庫libc、openssl、sqlite等,當(dāng)然也包括支持游戲開發(fā)2dsgl和 3dopengles,在多媒體方面有mediaframework框架來支持各種影音和圖形文件的播放與顯示,例如mpegmp aac、amr、jpg和png等眾多的多媒體文件格式。android的runtime負(fù)責(zé)解釋和執(zhí)行生成的dalvik格式的字節(jié)碼?! pplicationframework(應(yīng)用軟件架構(gòu)),java應(yīng)用程序開發(fā)人員主要是使用該層封裝好的api進行快速開發(fā)?! pplications:該層是java的應(yīng)用程序?qū)樱琣ndroid內(nèi)置的googlemaps、、即時通信工具、瀏覽器、mp3播放器等處于該層,java開發(fā)人員開發(fā)的程序也處于該層,而且和內(nèi)置的應(yīng)用程序具有平等的位置,可以調(diào)用內(nèi)置的應(yīng)用程序,也可以替換內(nèi)置的應(yīng)用程序?! ∩厦娴乃膫€層次,下層為上層服務(wù),上層需要下層的支持,調(diào)用下層的服務(wù),這種嚴(yán)格分層的方式帶來的極大的穩(wěn)定性、靈活性和可擴展性,使得不同層的開發(fā)人員可以按照規(guī)范專心特定層的開發(fā)。android應(yīng)用程序使用框架的api并在框架下運行,這就帶來了程序開發(fā)的高度一致性,另一方面也告訴我們,要想寫出優(yōu)質(zhì)高效的程序就必須對整個 applicationframework進行非常深入的理解。精通applicationframework,你就可以真正的理解android的設(shè)計和運行機制,也就更能夠駕馭整個應(yīng)用層的開發(fā)。2 請介紹下ContentProvider是如何實現(xiàn)數(shù)據(jù)共享的。一個程序可以通過實現(xiàn)一個Content provider的抽象接口將自己的數(shù)據(jù)完全暴露出去,而且Content providers是以類似數(shù)據(jù)庫中表的方式將數(shù)據(jù)暴露。Content providers存儲和檢索數(shù)據(jù),通過它可以讓所有的應(yīng)用程序訪問到,這也是應(yīng)用程序之間唯一共享數(shù)據(jù)的方法。要想使應(yīng)用程序的數(shù)據(jù)公開化,可通過2種方法:創(chuàng)建一個屬于你自己的Content provider或者將你的數(shù)據(jù)添加到一個已經(jīng)存在的Content provider中,前提是有相同數(shù)據(jù)類型并且有寫入Content provider的權(quán)限。如何通過一套標(biāo)準(zhǔn)及統(tǒng)一的接口獲取其他應(yīng)用程序暴露的數(shù)據(jù)? Android提供了ContentResolver,外界的程序可以通過ContentResolver接口訪問ContentProvider提供的數(shù)據(jù)。2 Service和Thread的區(qū)別?答:servie是系統(tǒng)的組件,它由系統(tǒng)進程托管(servicemanager);它們之間的通信類似于client和server,是一種輕量級的ipc通信,這種通信的載體是binder,它是在linux層交換信息的一種ipc。而thread是由本應(yīng)用程序托管。
1). Thread:Thread 是程序執(zhí)行的最小單元,它是分配CPU的基本單位??梢杂?Thread 來執(zhí)行一些異步的操作。2). Service:Service 是android的一種機制,當(dāng)它運行的時候如果是Local Service,那么對應(yīng)的 Service 是運行在主進程的 main 線程上的。如:onCreate,onStart 這些函數(shù)在被系統(tǒng)調(diào)用的時候都是在主進程的 main 線程上運行的。如果是RemoteService,那么對應(yīng)的 S
點擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1