最新Android面試題

最新Android面試題 
 
一、  Android自己的api並未聲明會拋出異常,則其在運行時有無可能拋出
runtime異常,你遇到過嗎?諾有的話會致使什麼問題?如何解決? 
  會,好比nullpointerException。我遇到過,好比textview.setText()時,textview沒有
初始化。會致使程序沒法正常運行出現forceclose。打開控制檯查看logcat信息找出最新
Android面試題異常信息並修改程序。 
 
二、IntentService有何優勢? 
  Acitivity的進程,當處理Intent的時候,會產生一個對應的Service;  Android的進程
處理器如今會盡量的不kill掉你;很是容易使用 
 
三、若是後臺的Activity因爲某緣由被系統回收了,如何在被系統回收以前保存
當前狀態? 
  重寫onSaveInstanceState()方法,在此方法中保存須要保存的數據,該方法將會在
activity被回收以前調用。經過重寫onRestoreInstanceState()方法能夠從中提取保存好的數據 
 
四、如何將一個Activity設置成窗口的樣式。 
  <activity>中配置:android :theme=" @android :style/Theme.Dialog"  
另外android:theme=" @android :style/Theme.Translucent" 是設置透明    五、如何退出Activity?如何安全退出已調用多個Activity的Application?    對於單一Activity的應用來講,退出很簡單,直接finish()便可。固然, 也能夠用killProcess()和System.exit()這樣的方法。  對於多個activity,一、記錄打開的Activity:每打開一個Activity,就記錄 下來。在須要退出時,關閉每個Activity便可。二、發送特定廣播:在須要結 束應用時,發送一個特定的廣播,每一個Activity收到廣播後,關閉便可。三、遞 歸退出:在打開新的Activity時使用startActivityForResult,而後本身加標 志,在onActivityResult中處理,遞歸關閉。爲了編程方便,最好定義一個 Activity基類,處理這些共通問題。  在2.1以前,可使用ActivityManager的restartPackage方法。  它能夠直接結束整個應用。在使用時須要權限 android.permission.RESTART_PACKAGES。  注意不要被它的名字迷惑。  但是,在2.2,這個方法失效了。在2.2添加了一個新的方法,killBackground Processes(), 須要權限android.permission.KILL_BACKGROUND_PROCESSES。惋惜的是,它和2.2 的restartPackage同樣,根本起不到應有的效果。  另外還有一個方法,就是系統自帶的應用程序管理裏,強制結束程序的方法, forceStopPackage()。它須要權限android.permission.FORCE_STOP_PACKAGES。而且 須要添加android:sharedUserId="android.uid.system"屬性。一樣惋惜的是,該方法是非公 開的,他只能運行在系統進程,第三方程序沒法調用。  由於須要在Android.mk中添加LOCAL_CERTIFICATE := platform。  而Android.mk是用於在Android源碼下編譯程序用的。  從以上能夠看出,在2.2,沒有辦法直接結束一個應用,而只能用本身的辦法間接辦到。  現提供幾個方法,供參考:  一、拋異常強制退出:  該方法經過拋異常,使程序Force Close。  驗證能夠,可是,須要解決的問題是,如何使程序結束掉,而不彈出Force Close的窗口。  二、記錄打開的Activity:  每打開一個Activity,就記錄下來。在須要退出時,關閉每個Activity便可。  三、發送特定廣播:  在須要結束應用時,發送一個特定的廣播,每一個Activity收到廣播後,關閉便可。  四、遞歸退出  在打開新的Activity時使用startActivityForResult,而後本身加標誌,在onActivityResult 中處理,遞歸關閉。  除了第一個,都是想辦法把每個Activity都結束掉,間接達到目的。可是這樣作一樣不完 美。你會發現,若是本身的應用程序對每個Activity都設置了nosensor,在兩個Activity 結束的間隙,sensor可能有效了。但至少,咱們的目的達到了,並且沒有影響用戶使用。 爲了編程方便,最好定義一個Activity基類,處理這些共通問題。        六、AIDL的全稱是什麼?如何工做?能處理哪些類型的數據?    全稱是:AndroidInterface Define Language  在Android中, 每一個應用程序均可以有本身的進程. 在寫UI應用的時候, 常常要用到 Service. 在不一樣的進程中, 怎樣傳遞對象呢?顯然, Java中不容許跨進程內存共享.所以傳遞 對象, 只能把對象拆分紅操做系統能理解的簡單形式, 以達到跨界對象訪問的目的. 在 J2EE中,採用RMI的方式, 能夠經過序列化傳遞對象.在Android中, 則採用AIDL的方式.  理論上AIDL能夠傳遞Bundle,實際上作起來卻比較麻煩。  AIDL(AndRoid接口描述語言)是一種藉口描述語言; 編譯器能夠經過aidl文件生成一段代 碼,經過預先定義的接口達到兩個進程內部通訊進程的目的. 若是須要在一個Activity中, 訪 問另外一個Service中的某個對象, 須要先將對象轉化成AIDL可識別的參數(多是多個參數), 而後使用AIDL來傳遞這些參數, 在消息的接收端, 使用這些參數組裝成本身須要的對象.  AIDL的IPC 的機制和COM或CORBA相似,  是基於接口的,但它是輕量級的。它使用代 理類在客戶端和實現層間傳遞值. 若是要使用AIDL, 須要完成2件事情: 1. 引入AIDL的相 關類.; 2.調用aidl 產生的class.  AIDL的建立方法:  AIDL語法很簡單,能夠用來聲明一個帶一個或多個方法的接口,也能夠傳遞參數和返回值。  因爲遠程調用的須要, 這些參數和返回值並非任何類型.下面是些AIDL支持的數據類型:  1. 不須要import 聲明的簡單Java編程語言類型(int,boolean等)  2. String, CharSequence不須要特殊聲明  3. List, Map和Parcelables類型, 這些類型內所包含的數據成員也只能是簡單數據類型,  String等其餘比支持的類型.       七、請解釋下Android程序運行時權限與文件系統權限的區別。    運行時權限Dalvik(android受權)   文件系統 linux 內核受權  八、系統上安裝了多種瀏覽器,可否指定某瀏覽器訪問指定頁面?請說明起因。       經過直接發送Uri把參數帶過去,或者經過manifest裏的intentfilter 裏的data屬性    九、android系統的優點和不足    Android平臺手機  5大優點:    1、開放性    在優點方面,Android平臺首先就是其開發性,開發的平臺容許任何移動終端廠商加入到 Android聯盟中來。顯著的開放性可使其擁有更多的開發者,隨着用戶和應用的日益豐富, 一個嶄新的平臺也將很快走向成熟。開放性對於Android的發展而言,有利於積累人氣,這 裏的人氣包括消費者和廠商,而對於消費者來說,隨大的受益正是豐富的軟件資源。開放的 平臺也會帶來更大競爭,如此一來,消費者將能夠用更低的價位購得心儀的手機。  2、掙脫運營商的束縛    在過去很長的一段時間,特別是在歐美地區,手機應用每每受到運營商制約,使用什麼功能 接入什麼網絡,幾乎都受到運營商的控制。從去年iPhone 上市  ,用戶能夠更加方便地連 接網絡,運營商的制約減小。隨着EDGE、HSDPA這些2G至3G移動網絡的逐步過渡和 提高,手機隨意接入網絡已不是運營商口中的笑談,當你能夠經過手機IM軟件方便地進行 即時聊天時,再回想不久前天價的彩信和圖鈴下載業務,是否是像噩夢同樣?互聯網巨頭 Google推進的Android終端天生就有網絡特點,將讓用戶離互聯網更近。  3、豐富的硬件選擇    這一點仍是與Android平臺的開放性相關,因爲Android的開放性,衆多的廠商會推出千奇 百怪,功能特點各具的多種產品。功能上的差別和特點,卻不會影響到數據同步、甚至軟件 的兼容,比如你從諾基亞  Symbian風格手機  一下改用蘋果  iPhone  ,同時還可將Symbian 中優秀的軟件帶到iPhone 上使用、聯繫人等資料更是能夠方便地轉移,是否是很是方便呢?  4、不受任何限制的開發商    Android平臺提供給第三方開發商一個十分寬泛、自由的環境,不會受到各類條條框框的阻 擾,可想而知,會有多少新穎別緻的軟件會誕生。但也有其兩面性,血腥、暴力、情色方面 的程序和遊戲如可控制正是留給Android難題之一。  5、無縫結合的Google應用    現在叱詫互聯網的Google已經走過10年度歷史,從搜索巨人到全面的互聯網滲透,Google 服務如地圖、郵件、搜索等已經成爲鏈接用戶和互聯網的重要紐帶,而Android平臺手機將 無縫結合這些優秀的Google服務。  再說Android的5大不足:  1、安全和隱私    因爲手機  與互聯網的緊密聯繫,我的隱私很可貴到保守。除了上網過程當中經意或不經意留 下的我的足跡,Google這個巨人也時時站在你的身後,洞穿一切,所以,互聯網的深刻將 會帶來新一輪的隱私危機。  2、首先開賣Android手機的不是最大運營商    衆所周知,T-Mobile在23日,於美國紐約發佈  了Android首款手機G1。可是在北美市場, 最大的兩家運營商乃AT&T和Verizon,而目前所知取得Android手機銷售權的僅有  T-Mobile和Sprint,其中T-Mobile的3G網絡相對於其餘三家也要遜色很多,所以,用戶 能夠買帳購買G1,可否體驗到最佳的3G網絡服務則要另當別論了!  3、運營商仍然可以影響到Android手機    在國內市場,很多用戶對購得移動定製機不滿,感受所購的手機被人塗畫了廣告通常。這樣 的狀況在國外市場一樣出現。Android手機的另外一發售運營商Sprint就將在其機型中內置其 手機商店程序。  4、同類機型用戶減小    在很多手機論壇都會有針對某一型號的子論壇,對一款手機的使用心得交流,並分享軟件資 源。而對於Android平臺手機,因爲廠商豐富,產品類型多樣,這樣使用同一款機型的用戶 愈來愈少,缺乏統一機型的程序強化。舉個稍顯不當的例子,如今山寨機氾濫,品種各異, 就不多有專門針對某個型號山寨機的討論和羣組,除了哪些功能異常搶眼、頗受追捧的機型 之外。  5、過度依賴開發商缺乏標準配置    在使用PC端的Windows Xp系統的時候,都會內置微軟Windows Media Player這樣一個 瀏覽器程序,用戶能夠選擇更多樣的播放器,如Realplay或暴風影音等。但入手開始使用 默認的程序一樣能夠應付多樣的須要。在Android平臺中,因爲其開放性,軟件更多依賴第 三方廠商,好比Android系統的SDK中就沒有內置音樂  播放器,所有依賴第三方開發,缺 少了產品的統一性。    十、Android dvm的進程和Linux的進程, 應用程序的進程是否爲同一個概念    DVM指dalivk的虛擬機。每個Android應用程序都在它本身的進程中運行,都擁 有一個獨立的Dalvik虛擬機實例。而每個DVM都是在Linux 中的一個進程,因此說能夠認 爲是同一個概念。    十一、sim卡的EF文件是什麼?有何做用    sim卡的文件系統有本身規範,主要是爲了和手機通信,sim本  身能夠有本身的操 做系統,EF就是做存儲並和手機通信用的    十二、嵌入式操做系統內存管理有哪幾種, 各有何特性    頁式,段式,段頁,用到了MMU,虛擬空間等技術    1三、什麼是嵌入式實時操做系統, Android 操做系統屬於實時操做系統嗎?    嵌入式實時操做系統是指當外界事件或數據產生時,可以接受並以足夠快的 速度予以處理,其處理的結果又能在規定的時間以內來控制生產過程或對處理系 統做出快速響應,並控制全部實時任務協調一致運行的嵌入式操做系統。主要用 於工業控制、軍事設備、 航空航天等領域對系統的響應時間有苛刻的要求,這 就須要使用實時系統。又可分爲軟實時和硬實時兩種,而android是基於linux 內核的,所以屬於軟實時。    1四、一條最長的短信息約佔多少byte?    中文70(包括標點),英文160,160個字節。  1五、有一個一維整型數組int[]data保存的是一張寬爲width,高爲height的圖 片像素值信息。請寫一個算法,將該圖片全部的白色不)像素點透明(0xffffffff 的透明度調整爲50%。    1六、如何將SQLite數據庫(dictionary.db文件)與apk文件一塊兒發佈    能夠將dictionary.db文件複製到Eclipse Android工程中的res aw目錄中。全部在res  aw目錄中的文件不會被壓縮,這樣能夠直接提取該目錄中的文件。能夠將dictionary.db文件 複製到res aw目錄中  1七、如何將打開res aw目錄中的數據庫文件?    在Android中不能直接打開res aw目錄中的數據庫文件,而須要在程序第一次啓動時 將該文件複製到手機內存或SD卡的某個目錄中,而後再打開該數據庫文件。  複製的基本方法是使用getResources().openRawResource方法得到res aw目錄中資源的  InputStream 對象,而後將該InputStream 對象中的數據寫入其餘的目錄中相應文件中。在 Android SDK中可使用SQLiteDatabase.openOrCreateDatabase方法來打開任意目錄中 的SQLite數據庫文件。    1八、DDMS和TraceView的區別?    DDMS是一個程序執行查看器,在裏面能夠看見線程和堆棧等信息,TraceView是 程序性能分析器  1九、java中如何引用本地語言    能夠用JNI(java native interface java  本地接口)接口    20、談談Android的IPC(進程間通訊)機制    IPC是內部進程通訊的簡稱,是共享"命名管道"的資源。Android中的IPC 機制是爲了 讓Activity和Service之間能夠隨時的進行交互,故在Android中該機制,只適用於Activity 和Service之間的通訊,相似於遠程方法調用,相似於C/S模式的訪問。經過定義AIDL接 口文件來定義IPC接口。Servier端實現IPC接口,Client端調用IPC接口本地代理。  2一、NDK是什麼  NDK是一些列工具的集合,NDK提供了一系列的工具,幫助開發者迅速的開發C/C++的動 態庫,並能自動將so和java 應用打成apk包。  NDK集成了交叉編譯器,並提供了相應的mk文件和隔離cpu、平臺等的差別,開發人員 只需簡單的修改mk文件就能夠建立出so       
相關文章
相關標籤/搜索