1、什麼是ANR 如何避免它?
http://blog.csdn.net/Zengyangtech/archive/2010/11/21/6025671.aspx
2、什麼情況會導致Force Close ?如何避免?能否捕獲導致其的異常?
3、Android本身的api並未聲明會拋出異常,則其在運行時有無可能拋出runtime異常,你遇到過嗎?諾有的話會導致什麼問題?如何解決?
4、簡要解釋一下activity、 intent 、intent filter、service、Broadcast、BroadcaseReceiver
http://blog.csdn.net/Zengyangtech/archive/2010/11/21/6025676.aspx
5、IntentService有何優點?
IntentService is a base class for Services that handle asynchronous requests (expressed as Intents) on demand. Clients send requests through startService(Intent) calls; the service is started as needed, handles each Intent in turn using a worker thread, and stops itself when it runs out of work.
This ‘work queue processor’ pattern is commonly used to offload tasks from an application’s main thread. The IntentService class exists to simplify this pattern and take care of the mechanics. To use it, extend IntentService and implement onHandleIntent(Intent). IntentService will receive the Intents, launch a worker thread, and stop the service as appropriate.
All requests are handled on a single worker thread — they may take as long as necessary (and will not block the application’s main loop), but only one request will be processed at a time.”
IntentService 的好處
Acitivity的進程,當處理Intent的時候,會產生一個對應的Service
Android的進程處理器現在會儘可能的不kill掉你
非常容易使用
日曆中IntentService的應用
public class DismissAllAlarmsService extends IntentService {
@Override public void onHandleIntent(Intent unusedIntent) {
ContentResolver resolver = getContentResolver();
...
resolver.update(uri, values, selection, null);
}
}
in AlertReceiver extends BroadcastReceiver, onReceive(): (main thread)
Intent intent = new Intent(context, DismissAllAlarmsService.class);
context.startService(intent);
6.根據自己的理解描述下Android數位簽章
Android 數位簽章
在Android系統中,所有安裝到系統的應用程式都必有一個數位憑證,此數位憑證用於標識應用程式的作者和在應用程式之間建立信任關係,如果一個permission的protectionLevel為signature,那麼就只有那些跟該permission所在的程式擁有同一個數位憑證的應用程式才能取得該許可權。Android使用Java的數位憑證相關的機制來給apk加蓋數位憑證,要理解android的數位憑證,需要先瞭解以下數位憑證的概念和java的數位憑證機制。Android系統要求每一個安裝進系統的應用程式都是經過數位憑證簽名的,數位憑證的私密金鑰則儲存在程式開發人員的手中。Android將數位憑證用來標識應用程式的作者和在應用程式之間建立信任關係,不是用來決定終端使用者可以安裝哪些應用程式。這個數位憑證並不需要權威的數位憑證簽名機構認證,它只是用來讓應用程式套件組合自我認證的。
同一個開發人員的多個程式儘可能使用同一個數位憑證,這可以帶來以下好處。
(1)有利於程式升級,當新版程式和舊版程式的數位憑證相同時,Android系統才會認為這兩個程式是同一個程式的不同版本。如果新版程式和舊版程式的數位憑證不相同,則Android系統認為他們是不同的程式,併產生衝突,會要求新程式更改包名。
(2)有利於程式的模組化設計和開發。Android系統允許擁有同一個數位簽章的程式運行在一個進程中,Android程式會將他們視為同一個程式。所以開發人員可以將自己的程式分模組開發,而使用者只需要在需要的時候下載適當的模組。
(3)可以通過許可權(permission)的方式在多個程式間共用資料和代碼。Android提供了基於數位憑證的許可權賦予機制,應用程式可以和其他的程式共用概功能或者資料給那那些與自己擁有相同數位憑證的程式。如果某個許可權(permission)的protectionLevel是signature,則這個許可權就只能授予那些跟該許可權所在的包擁有同一個數位憑證的程式。
在簽名時,需要考慮數位憑證的有效期間:
(1)數位憑證的有效期間要包含程式的預計生命週期,一旦數位憑證失效,持有改數位憑證的程式將不能正常升級。
(2)如果多個程式使用同一個數位憑證,則該數位憑證的有效期間要包含所有程式的預計生命週期。
(3)Android Market強制要求所有應用程式數位憑證的有效期間要持續到2033年10月22日以後。
Android數位憑證包含以下幾個要點:
(1)所有的應用程式都必須有數位憑證,Android系統不會安裝一個沒有數位憑證的應用程式
(2)Android程式包使用的數位憑證可以是自簽名的,不需要一個權威的數位憑證機構簽名認證
(3)如果要正式發布一個Android ,必須使用一個合適的私密金鑰產生的數位憑證來給程式簽名,而不能使用adt外掛程式或者ant工具產生的調試認證來發布。
(4)數位憑證都是有有效期間的,Android只是在應用程式安裝的時候才會檢查認證的有效期間。如果程式已經安裝在系統中,即使認證到期也不會影響程式的正常功能。
Android面試題
1. 請描述下Activity的生命週期。
2. 如果背景Activity由於某原因被系統回收了,如何在被系統回收之前儲存目前狀態?
3. 如何將一個Activity設定成視窗的樣式。(Edited by Sodino)
4. 如何退出Activity?如何安全退出已調用多個Activity的Application?
5. 請介紹下Android中常用的五種布局。
6. 請介紹下Android的資料存放區方式。(Edited by Sodino)
7. 請介紹下ContentProvider是如何?資料共用的。(Edited by Sodino)
8. 如何啟用Service,如何停用Service。(Edited by Sodino)
9. 註冊廣播有幾種方式,這些方式有何優缺點?請談談Android引入廣播機制的用意。
10. 請解釋下在單執行緒模式中Message、Handler、Message Queue、Looper之間的關係。
11. AIDL的全稱是什嗎?如何工作?能處理哪些類型的資料?
12. 請解釋下Android程式運行時許可權與檔案系統許可權的區別。(Edited by Sodino)
13. 系統上安裝了多種瀏覽器,能否指定某瀏覽器訪問指定頁面?請說明原由。
14. 有一個一維整型數組int[]data儲存的是一張寬為width,高為height的圖片像素值資訊。請寫一個演算法,將該圖片所有的白色不透明(0xffffffff)像素點的透明度調整為50%。
15. 你如何評價Android系統?優缺點。
1.activity的生命週期。
2.橫豎屏切換時候activity的生命週期
總結:
1、不設定Activity的android:configChanges時,切屏會重新調用各個生命週期,切橫屏時會執行一次,切豎屏時會執行兩次
2、設定Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命週期,切橫、豎屏時只會執行一次
3、設定Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命週期,只會執行onConfigurationChanged方法
3.android中的動畫有哪幾類,它們的特點和區別是什麼
4.handler機制的原理
5.說說activity,intent,service是什麼關係
6.android中線程與線程,進程與進程之間如何通訊
7.widget相對位置的完成在antivity的哪個生命週期階段實現
8.說說mvc模式的原理,它在android中的運用
9.說說在android中有哪幾種資料存放區方式
10.android中有哪幾種解析xml的類,官方推薦哪種?以及它們的原理和區別