Android面試題(五)

一、android動畫有哪幾種?它的特點及區別是什麼?

 

android動畫有兩種,分別爲tween動畫和frame動畫。tween動畫的實現方式可以使用視圖組件移動,放大或縮小以及產生透明度的變化;frame動畫

是傳統的動畫方式,通過順序播放排列好的圖片來實現,類似於播放電影。

 

 

二、請簡述handler進制的原理

 

android提供了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

 

 

三、android  view的刷新

 

Android中對view的更新有很多種方式,使用時要區分不同的應用場合,在使用的過程中應該分清多線程和雙緩衝的使用情況。

1.不使用多線程和雙緩衝:這種情況比較簡單,一般只是希望在View發生改變時對UI進行重繪,你只需要在Activity中顯式地調用View對象中的invalidate()方法

即可,系統會自動調用View的onDraw()方法

2.使用多線程和不使用雙緩衝:這種情況需要開戶新的線程,新開的線程就不好訪問View對象了,強行訪問的話會報錯:android.view.ViewRoot$CalledFromWrongThreadException:Only the originalthread that created a view hierarchy can touch its views.

這時候你需要創建一個繼承了android.os.Handler子類,並重寫handleMessage(Message  msg)的方法。android.os.Handler是能發送和處理消息的,你

需要在Activity中發出更新UI的消息,然後再在Handler(可以使用匿名內部類)處理消息(因爲匿名內部類可以訪問父類變量,你可以直接調用View對象

中的invalidata()方法)。即在新線程創建併發送一個Message,然後在主線程中捕獲、處理該消息。

3.使用多線程和雙緩衝:Android中SurfaceView是View的子類,它同時也實現了雙緩衝,你可以定義一個它的子類並實現SurfaceHolder.Callback接口。

由於實現SurfaceHolder.Callback接口,新線程就不需要android.os.Handler幫忙了。SurfaceHolder中lockCanvas()方法可以鎖定畫布,繪製完新的圖

像後調用unlockCanvasAndPost(canvas)解鎖(顯示),還是比較方便得。

 

 

四、SIM卡的EF文件有何作用?

 

SIM卡的文件系統由自己規範,主要是爲了和手機通訊,SIM本身可以有自己的操作系統,EF就是用來存儲並且和手機通訊的。

 

 

五、什麼是嵌入式實時操作系統,Android操作系統屬於實時操作系統嗎?

 

嵌入式實時損失指當外界事件或數據產生時,能夠接受並以足夠快的速度予以處理,其處理的結果以能在規定的時間之內來

控制生產過程或對處理系統作出快速響應,並控制所有實時任務協調一致運行的嵌入式操作系統。主要用於工業控制、軍事

設備、航空航天等領域對系統的時間有苛刻的要求,這就需要使用實時系統。實時系統可以分爲軟實時和硬實時兩種,而

android是基於linux內核的,因此屬於軟實時。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章