android面試題大全
如果后臺的activity由于某原因被系統(tǒng)回收了,如何在被系統(tǒng)回收之前保存當(dāng)前狀態(tài)?
如何將一個activity設(shè)置成窗口的樣式。(edited by sodino)
如何退出activity?如何安全退出已調(diào)用多個activity的application?
請介紹下android中常用的五種布局。
請介紹下android的數(shù)據(jù)存儲方式。(edited by sodino)
請介紹下contentprovider是如何實現(xiàn)數(shù)據(jù)共享的。(edited by sodino)
如何啟用service,如何停用service。(edited by sodino)
注冊廣播有幾種方式,這些方式有何優(yōu)缺點?請談?wù)刟ndroid引入廣播機制的用意。
請解釋下在單線程模型中message、handler、message queue、looper之間的關(guān)系。
aidl的全稱是什么?如何工作?能處理哪些類型的數(shù)據(jù)?
請解釋下android程序運行時權(quán)限與文件系統(tǒng)權(quán)限的區(qū)別。(edited by sodino)
系統(tǒng)上安裝了多種瀏覽器,能否指定某瀏覽器訪問指定頁面?請說明原由。
嵌入式操作系統(tǒng)內(nèi)存管理有哪幾種,各有何特性 ?
頁式,段式,段頁,用到了mmu,虛擬空間等技術(shù)
什么是嵌入式實時操作系統(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)核的,因此屬于軟實時。
一條最長的短信息約占多少byte?
中文70(包括標點),英文160個字節(jié)
android中的動畫有哪幾類,它們的特點和區(qū)別是什么?
兩種,一種是tween動畫、還有一種是frame動畫。tween動畫,這種實現(xiàn)方式可以使視圖組件移動、放大、縮小以及產(chǎn)生透明度的變化;另一種frame動畫,傳統(tǒng)的動畫方法,通過順序的播放排列好的圖片來實現(xiàn),類似電影。
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。
說說mvc模式的原理,
它在android中的運用 mvc(model_view_contraller)” 模型_視圖_控制器”。 mvc應(yīng)用程序總是由這三個部分組成。event(事件)導(dǎo)致controller改變model或view,或者同時改變兩者。只要 controller改變了models的數(shù)據(jù)或者屬性,所有依賴的view都會自動更新。類似的,只要controller改變了view,view會 從潛在的model中獲取數(shù)據(jù)來刷新自己
(view重繪和內(nèi)存泄露面試經(jīng)常問的問題 )
view的刷新:
在需要刷新的地方,使用handle.sendmessage發(fā)送信息,然后在handle的getmessage里面執(zhí)行invaliate或者postinvaliate。
可以調(diào)用invalidate()和postinvalidate()這兩個方法刷新
gc內(nèi)存泄露 出現(xiàn)情況:
1).數(shù)據(jù)庫的cursor沒有關(guān)閉
2).構(gòu)造adapter時,沒有使用緩存contentview 衍生listview的優(yōu)化問題-----減少創(chuàng)建view的對象,充分使用contentview,可以使用一靜態(tài)類來優(yōu)化處理getview的過程/
3).bitmap對象不使用時采用recycle()釋放內(nèi)存
4).activity中的對象的生命周期大于activity 調(diào)試方法: ddms==> heapszie==>dataobject==>[total size]