android面試題總結加強版
1.activity的生命周期。
onCreate() 在activity第一次被創建的時候調用。這里是你做所有初始化設置的地方──創建視圖、綁定數據至列表等。如果曾經有狀態記錄(參閱后述Saving Activity State。),則調用此否 onStart()方法時會傳入一個包含著此activity以前狀態的包對象做為參數。
總繼之以onStart()。
onRestart() 在activity停止后,在再次啟動之前被調用。
總繼之以onStart()。
當activity正要變得為用戶所見時被調用。 否 onStart()
onStart() 當activity轉向前臺時繼以onResume(),在activity變為隱藏時繼以onStop()。 onResume() 否 or onStop()
在activity開始與用戶進行交互之前被調用。此時activity位于堆棧頂部,并onResume() 接受用戶輸入。 否 onPause()繼之以onPause()。
當系統將要啟動另一個activity時調用。此方法主要用來將未保存的變化進行持久化,停止類似動畫這樣耗費CPUonResume() 的動作等。這一切動作應該在短時間內onPause() 是 or 完成,因為下一個activity必須等到此onStop() 方法返回后才會繼續。
當activity重新回到前臺是繼以onResume()。當activity變為用戶不可見時繼以onStop()。 當activity不再為用戶可見時調用此方法。這可能發生在它被銷毀或者另一個activity(可能是現存的或者是新的)回到運行狀態并覆蓋了它。
如果activity再次回到前臺跟用戶交互則繼以onRestart(),如果關閉activity則繼以onDestroy()。 onStop() onRestart() 是 or onDestroy() onDestroy() 在activity銷毀前調用。這是activity接收的最后一個調用。這可能發生在activity結束(調用了它的 finish() 方法)或者因為系統需要是 nothing空間所以臨時的銷毀了此acitivity的實例時。你可以用isFinishing() 方法來區分這兩種情況。
2.橫豎屏切換時候activity的生命周期
1.不設置Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次.
2.設置Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命周期,切橫、豎屏時只會執行一次.
3.設置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法.
4. 一條最長的短信息約占多少byte中文70(包括標點),英文160個字節。
5.handler機制的原理
andriod提供了 Handler 和 Looper 來滿足線程間的通信。Handler 先進先出原則。Looper類用來管理特定線程內對象之間的消息交換(Message Exchange)。
1)Looper: 一個線程可以產生一個Looper對象,由它來管理此線程里的'
Message Queue(消息隊列)。
2)Handler: 你可以構造Handler對象來與Looper溝通,以便push新消息到Message Queue里;或者接收Looper從Message Queue取出)所送來的消息。
3) Message Queue(消息隊列):用來存放線程放入的消息。
4)線程:UI thread 通常就是main thread,而Android啟動程序時會替它建立一個Message Queue。
6.什么是嵌入式實時操作系統, Android 操作系統屬于實時操作系統嗎
嵌入式實時操作系統是指當外界事件或數據產生時,能夠接受并以足夠快的速度予以處理,其處理的結果又能在規定的時間之內來控制生產過程或對處理系統作出快速響應,并控制所有實時任務協調一致運行的嵌入式操作系統。主要用于工業控制、 軍事設備、 航空航天等領域對系統的響應時間有苛刻的要求,這就需要使用實時系統。又可分為軟實時和硬實時兩種,而android是基于linux內核的,因此屬于軟實時。
7.android中線程與線程,進程與進程之間如何通信
1、一個 Android 程序開始運行時,會單獨啟動一個Process。
默認情況下,所有這個程序中的Activity或者Service都會跑在這個Process。
默認情況下,一個Android程序也只有一個Process,但一個Process下卻可以有許多個Thread。
2、一個 Android 程序開始運行時,就有一個主線程Main Thread被創建。該線程主要負責UI界面的顯示、更新和控件交互,所以又叫UI Thread。
一個Android程序創建之初,一個Process呈現的是單線程模型--即Main Thread,所有的任務都在一個線程中運行。所以,Main Thread所調用的每一個函數,其耗時應該越短越好。而對于比較費時的工作,應該設法交給子線程去做,以避免阻塞主線程(主線程被阻塞,會導致程序假死 現象)。
3、Android單線程模型:Android UI操作并不是線程安全的并且這些操作必須在UI線程中執行。如果在子線程中直接修改UI,會導致異常。
8.Android dvm的進程和Linux的進程, 應用程序的進程是否為同一個概念
DVM指dalivk的虛擬機。每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。而每一個DVM都是在Linux 中的一個進程,所以說可以認為是同一個概念。
9.sim卡的EF 文件有何作用
sim卡的文件系統有自己規范,主要是為了和手機通訊,sim本 身可以有自己的操作系統,EF就是作存儲并和手機通訊用的
11.讓Activity變成一個窗口:Activity屬性設定
講點輕松的吧,可能有人希望做出來的應用程序是一個漂浮在手機主界面的東西,那么很 簡單你只需要設置 一下Activity的主題就可以了在AndroidManifest.xml 中定義 Activity的 地方一句話:Xml代碼
1. android :theme="@android:style/Theme.Dialog"這就使你的應用程序變成對話框的形式彈出來了,或者Xml代碼
1. android:theme="@android:style/Theme.Translucent"
就變成半透明的,[友情提示-.-]類似的這種activity的屬性可以在android.R.styleable 類的AndroidManifestActivity 方法中看到,AndroidManifest.xml中所有元素的屬性的介紹都可以參考這個類android.R.styleable
上面說的是屬性名稱,具體有什么值是在android.R.style中 可以看到,比如這個"@android:style/Theme.Dialog" 就對應于android.R.style.Theme_Dialog ,('_'換成'.' < --注意:這個是文章內容不是笑臉)就可以用在描述文件 中了,找找類定義和描述文件中的對應關系就都明白了。
12.如何將SQLite數據庫(dictionary.db文件)與apk文件一起發布解答:可以將dictionary.db文件復制到Eclipse Android工程中的res aw目錄中。所有在res aw目錄中的文件不會被壓縮,這樣可以直接提取該目錄中的文件。可以將dictionary.db文件復制到res aw目錄中
13.如何將打開res aw目錄中的數據庫文件
解答:在Android中不能直接打開res aw目錄中的數據庫文件,而需要在程序第一次啟動時將該文件復制到手機內存或SD卡的某個目錄中,然后再打開該數據庫文件。復制的基本方法是使用getResources().openRawResource方法獲得res aw目錄中資源
的 InputStream對象,然后將該InputStream對象中的數據寫入其他的目錄中相應文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法來打開任意目錄中的SQLite數據庫文件。
【android面試題總結加強版】相關文章:
總結的android面試題01-27
android測試面試題06-30
android軟件測試面試題及答案06-30
面試題解答方法總結05-11
軟件測試經典面試題總結文庫06-21
關于九種特色面試題的總結05-14
面試題大全01-23
面試題舉例05-11
江蘇面試題05-08