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