- Android系統(tǒng)對(duì)下列哪些對(duì)象提供了資源池
答案:Messagehe,AsyncTask。 -
getMetrics用于獲取屏幕的高和寬。 - DVM指dalvik的虛擬機(jī).每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的 Dalvik虛擬機(jī)實(shí)例.而每一個(gè)DVM都是在Linux 中的一個(gè)進(jìn)程,所以說可以認(rèn)為是同一個(gè)概念.
- Activity和Task的啟動(dòng)模式有哪些?
答:
standard、singleTop、singleTask,singleInstance。
解析:
- “拿來主義”
standard模式。哪里需要調(diào)用我我就去哪里,可以多次實(shí)例化,可以幾個(gè)相同的Activity重疊。- “拒絕堆疊”
singleTop模式。可以多次實(shí)例化,但是不可以多個(gè)相同的Activity重疊,當(dāng)堆棧的頂部為相同的Activity時(shí),會(huì)調(diào)用onNewIntent函數(shù)。- “獨(dú)立門戶”
singleTask模式。同一個(gè)應(yīng)用中調(diào)用該Activity時(shí),如果該Activity沒有被實(shí)例化,會(huì)在本應(yīng)用程序的Task內(nèi)實(shí)例 化,如果已經(jīng)實(shí)例化,會(huì)將Task中其上的Activity銷毀后,調(diào)用onNewIntent;其它應(yīng)用程序調(diào)用該Activity時(shí),如果該 Activity沒有被實(shí)例化,會(huì)創(chuàng)建新的Task并實(shí)例化后入棧,如果已經(jīng)實(shí)例化,會(huì)銷毀其上的Activity,并調(diào)用onNewIntent。一句 話,singleTask就是“獨(dú)立門戶”,在自己的Task里,并且啟動(dòng)時(shí)不允許其他Activity凌駕于自己之上。- “孤獨(dú)寂寞”
singleInstance模式。加載該Activity時(shí)如果沒有實(shí)例化,他會(huì)創(chuàng)建新的Task后,實(shí)例化入棧,如果已經(jīng)存在,直接調(diào)用 onNewIntent,該Activity的Task中不允許啟動(dòng)其它的Activity,任何從該Activity啟動(dòng)的其他Activity都將被 放到其他task中,先檢查是否有本應(yīng)用的task,沒有的話就創(chuàng)建。
- 對(duì)于一個(gè)已經(jīng)存在的SharedPreferences對(duì)象
setting,想向其中存入一個(gè)字符串"person",setting應(yīng)該先調(diào)用什么方法( ).
答:
edit()
解析://實(shí)例化SharedPreferences對(duì)象(第一步) SharedPreferences mySharedPreferences= getSharedPreferences("test", Activity.MODE_PRIVATE); //實(shí)例化SharedPreferences.Editor對(duì)象(第二步)(android.content.SharedPreferences.Editor) SharedPreferences.Editor editor = mySharedPreferences.edit(); //用putString的方法保存數(shù)據(jù) editor.putString("name", "Karl"); editor.putString("habit", "sleep"); //提交當(dāng)前數(shù)據(jù) editor.commit();
- 編寫AIDL文件時(shí),需要注意以下幾點(diǎn):
1.接口名和aidl文件名相同。
2.接口和方法前不用加訪問權(quán)限修飾符public,private,protected等,也不能用final,static。
3.Aidl默認(rèn)支持的類型包話java基本類型(int、long、boolean等)和(String、List、Map、 CharSequence),使用這些類型時(shí)不需要import聲明。對(duì)于List和Map中的元素類型必須是Aidl支持的類型。如果使用自定義類型作 為參數(shù)或返回值,自定義類型必須實(shí)現(xiàn)Parcelable接口。
4.自定義類型和AIDL生成的其它接口類型在aidl描述文件中,應(yīng)該顯式import,即便在該類和定義的包在同一個(gè)包中。
5.在aidl文件中所有非Java基本類型參數(shù)必須加上in、out、inout標(biāo)記,以指明參數(shù)是輸入?yún)?shù)、輸出參數(shù)還是輸入輸出參數(shù)。
6.Java原始類型默認(rèn)的標(biāo)記為in,不能為其它標(biāo)記。
持續(xù)更新...
- ANR(Application Not Responding)
在Android中,如果你的應(yīng)用程序有一段時(shí)間響應(yīng)不夠靈敏,系統(tǒng)會(huì)向用戶顯示一個(gè)對(duì)話框,這個(gè)對(duì)話框稱作應(yīng)用程序無響應(yīng)(ANR:Application Not Responding)對(duì)話框。用戶可以選擇“等待”而讓程序繼續(xù)運(yùn)行,也可以選擇“強(qiáng)制關(guān)閉”。
默認(rèn)情況下,Activity的最長(zhǎng)執(zhí)行時(shí)間是5秒,BroadcastReceiver的最長(zhǎng)執(zhí)行時(shí)間是10秒。超出就會(huì)提示應(yīng)用無響應(yīng)。
三種常見類型:
- KeyDispath Timeout(5 seconds) -- 主要類型
按鍵或觸摸事件在特定時(shí)間內(nèi)無響應(yīng)。- BroadcastTimeout(10 seconds)
BroadcastReceiver在特定時(shí)間內(nèi)無法處理完成。- Service Timeout(20 seconds) --小概率類型
Service在特定的時(shí)間內(nèi)無法處理完成。
- 從架構(gòu)圖看,Android分為5個(gè)層
Linux Kernel(Linux內(nèi)核)、Hardware Abstraction Layer(硬件抽象層)、Libraries(系統(tǒng)運(yùn)行庫(kù)或者是c/c++ 核心庫(kù))、Application Framework(開發(fā)框架包 )、Applications(核心應(yīng)用程序)
image
- Android系統(tǒng)對(duì)下列哪些對(duì)象提供了資源池
答案:Message和AsyncTask。
Message有靜態(tài)方法Obtaion從消息池中取對(duì)象。AsynTask是線程池改造的,池里默認(rèn)提供(核數(shù) + 1)個(gè)線程進(jìn)行并發(fā)操作,最大支持(核數(shù) * 2 + 1)個(gè)線程,超過后會(huì)丟棄塔塔任務(wù);
- 請(qǐng)介紹一下,socket編程的三種通信模型,BIO,NIO,AIO:
- BIO是同步阻塞IO,是一個(gè)客戶端對(duì)應(yīng)一個(gè)線程
- NIO是同步非阻塞IO,多個(gè)客戶端對(duì)應(yīng)一個(gè)線程,服務(wù)端和客戶端均使用緩沖區(qū)的方式進(jìn)行讀寫。
- AIO是異步非阻塞IO,AIO的簡(jiǎn)化是NIO