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