Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android面試題整理(2)

android面試題整理(2)

編輯:關於Android編程

1、請解釋下Android程序運行時權限與文件系統的權限的區別
運行時 Dalvik(Android授權)
文件系統 linux 內核授權
2、系統上安裝了多種的浏覽器,是否能指定某個浏覽器訪問指定的頁面
在android程序中我們可以通過顯示intent來啟動浏覽器,前提是要知道浏覽器的packagename 和要啟動的activity通過修改
intent.setClassName來啟動;啟動程序之後,指定其action以及uri,就可以訪問指定的網頁intent.setAction("android.intent.action.VIEW");Uri content_url =Uri.parse("http://www.163.com");
intent.setData(content_url); startActivity(intent);
3、android dvm的進程和Linux的進程應用程序是否為同一個概念
DVM指dalivk的虛擬機。每一個android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvok虛擬實例。而每一個DVM都是在Linux中的一個進程,所以說可以認為是同一個概念。
4、sim卡的ef文件有何作用。
sim卡的文件系統有自己規范,主要是為了和手機通訊,sim本身可以有自己的操作系統,ef就是作存儲並和手機通訊錄的。
5、handler機制的原理
android提供了Handler和Looper來滿足線程之間的通信。handler先進先出的原則。Looper類用來管理特定的線程內對象之間的消息交換
Looper:一個線程可以產生一個Looper對象,由他來管理此線程裡的Message Queue(消息隊列)
Handler:你可以構造Handler對象與Looper溝通,以便push新消息到Message Queue裡,或者接收Looper從Message Queue取出所送來的消息
Message Queue(消息隊列):用來存放線程放入的消息
線程:UI thread通常就是main thread,而android啟動程序時會替他建立一個Message Queue
6、什麼是ANR如何避免它
ANR:application Not Responding 五秒 在Android中,活動管理器和窗口管理器這兩個服務負責監聽事件的響應。android出現ANR對話框的情況;在輸入事件的響應超過5秒,意向接收器(intentReceiver)超過10秒鐘
仍未執行完畢
7、什麼情況會導致Force Close?如何避免?是否捕獲導致其的異常
一般像空指針啊,可以看起來logcat,然後對應到應用程序中來解決問題
8、IntentService有何優點?
Activity的進程,當處理intent的時候,會產生一個對應的Service
android的進程處理器會盡可能不kill掉
非常容易使用
9、如何將SQLite數據庫與apk文件一起發布?
可以將文件復制到Eclipse android工程中的res aw目錄中。所有在res aw目錄中的文件不會被壓縮,這樣可以直接提取目錄中的文件。
10、如何打開res aw 目錄中的數據庫文件?
在android中不能直接打開res aw 目錄中的數據庫,需要在程序的第一次啟動時將該文件復制到手機內存或SD卡中的目錄中,然後再打開該數據庫文件。復制的基本方法是使用getResources().openRawResource方法獲取res aw
目錄資源的inputStream對象,然後將該inputStream對象中的數據寫入其他目錄中的相應文件中。在android sdk中可以使用SQLiteDatabase.openOrCreateDatabase方法來打開任意目錄中的SQLite數據庫文件。
11、如何加載音樂信息,如何改善其效率。
android系統提供了MediaScanner,MediaProvider,MediaStore等接口,並且提供了一套數據庫表格,通過ContentProvider的方式提供給用戶。當手機或開機或有sd卡插撥等事件發生時,系統將會自動掃描SD卡和手機內存上的媒體文件,如
audio,vido,圖片等,將相應的信息放到定義好的數據庫表格中。
改善效率可以從界面需要查詢必備的數據,不需要的不進行查詢。
12、ListView如何提高其效率?
使用分頁加載,不要一次性加載所有數據
13、Android程序與java程序的區別?
android程序是java編寫的,但程序使用的android開發的api,就是android庫。
14、Android系統中GC什麼情況相愛會出現內存洩漏?
數據庫的cursor沒有關閉
構造器adapter時,沒有使用緩存contentview;減少創建view的對象,充分使用contentView,可以使用一靜態類來優化處理getview的過程;
Bitmap對象不實用時采用recycle()釋放內存
activity中的對象的生命周期大於activity
15、android UI中的View如何刷新
一般只是希望View發生改變時對UI進行重繪。只需要在Activity中顯示的調用View對象的invalidate()方法即可。系統會自動調用View的onDraw()方法
16、res目錄有幾項resource
6項 ,drawable-hdpi,drawable-ldpi,drawable-mdpi,layout,values。
17、NotifactionManager使用原理
通過getSystemService方法獲得一個NotificationManager對象。
創建一個Notification對象。每一個Notification對應一個Notification對象。在這一步需要設置顯示在屏幕上方狀態欄的通知消息、通知消息前方的圖像資源ID和發出通知的時間。一般為當前時間
由於Notification可以與應用程序脫離。也就是說,即使應用程序被關閉,Notification仍然會顯示在狀態欄中。當應用程序再次啟動後,又可以重新控制這些Notification。如清除或替換它們。因此,需要創建一個PendingIntent對象。該對象
由android系統負責維護,因此,在應用程序關閉後,該對象仍然不會被釋放。
使用Notification類的setLatestEventInfo方法設置Notification的詳細信息。
使用NotificationManager類的notify方法顯示Notififcation消息。在這一步需要指定標識Notification的唯一ID。這個ID必須相對同一個NotificationManager對象是唯一的,否則會被覆蓋相同的ID的Notification。
18、Android開發過程中如何進行算法與界面的優化
調整程序的進程結構減少進程數量(善用ViewStub ViewSwitch等)減少進程周期循環次數,及時讓進程休眠編寫長壽代碼,只在需要時運行,服務應盡快完成並結束
調整算法,取消不必要的環節,減少對CPU和內存的需求減少函數調用次數適當使用JNI3,精心設計界面避免復雜布局。控制嵌套和View數量,善於用Merge、inflate(),RelatvieLayout等,去除不必要的背景、動畫執行時間,耗時任務之前檢查電量、提示用戶
19、談下android系統的架構
Android系統采用了分層架構,從高層到底層分別是應用程序層、應用程序框架層、系統運行庫層、linux核心層
20、View,SurfaceView,GLSurfaceView有什麼區別
view是最基礎的,必須在ui主線程更新畫面,速度較慢。
SurfaceView是view的子類,類似使用雙緩存機制。在新的線程中更新畫面所刷新界面速度比view快
GLSurfaceView是SurfaceView的子類,opengl專用。
21、根據自己的理解描述下android數字簽名
所有額應用程序必須有數字證書,android系統不會安裝一個沒有數字證書的應用程序
android程序包使用的數字證書可以是自簽名,不需要一個權威的數字證書機構簽名認證
如果正式發布一個android,必須使用一個合適的私鑰生成的數字證書來給程序簽名,而不能使用adt插件或ant工具生成的調試證書來發布
數字證書都是有有效期,android只是在應用程序安裝的時候才會檢查證書的有效期。如果程序已經安裝在系統中,即使證書過期也不會影響程序的正常功能。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved