Android試題

Android應用的入口點是什麼?

   Android使用Google Dalvik VM,相對於傳統Java VM而言有着很大的不同,在Sun的Java體系中入口點和標準c語言一樣是main(),而每個Android程序都包含着一個Application實例,一個Application實例中有多個Activity、Service等等。android.app.Application這個包的onCreate就是Android入口點,只不過一般情況無需重寫該類,他的繼承關係如下:

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.ContextWrapper
       ↳ android.app.Application

android.app.Application類包含了4個公開的方法

void  onConfigurationChanged(Configuration newConfig)
void  onCreate()  //這裏就是android應用的入口點。
void  onLowMemory()
void  onTerminate()

 原文:http://www.android123.com.cn/kaifafaq/829.html

 

Android進程5個等級及區別,優先級別是什麼?

1.foreground 2.visiable 3.service4.background 5.empty

Foreground Process(優先級最高,結束它需要用戶響應): 正處於Activity Resume狀態,正處於bound服務交互狀態 正處於服務在前臺運行狀態(startForeground()被調用)。service生命週期函數正被執行,BroadcastReceiver正執行onReceive()方法

Visiable Process; Activity 不在前端顯示,也沒有完全隱藏(比如彈出對話框),一個bound到visible或者foreground的activity的service

Service Process:正在運行的不在上述兩種狀態的的service

Backgound Process: 不可見的activity 進程,(onStop()被調用)

Empty Process :沒有運行任何Component的進程,保留這個進程主要爲了緩存的需要。

Android 操作系統屬於實時操作系統嗎?

嵌入式實時操作系統是指當外界事件或數據產生時,能夠接受並以足夠快的速度予以處理,其處理的結果又能在規定的時間之內來控制生產過程或對處理系統作出快速響應,並控制所有實時任務協調一致運行的嵌入式操作系統。主要用於工業控制、軍事設備、航空航天等領域對系統的響應時間有苛刻的要求,這就需要使用實時系統。實時操作系統分爲硬實時和軟實時,android屬於linux內核,linux在用戶空間可搶佔,內核空間在2.4以後可局部搶佔,嚴格來講 Android屬於軟實時系統。

 

sim卡的EF 文件有何作用
sim卡的文件系統有自己規範,主要是爲了和手機通訊,sim本 身可以有自己的操作系統,EF用於存儲並和手機通訊

 

android中的動畫有哪幾類,它們的特點和區別是什麼?
  兩種,一種是Tween動畫、還有一種是Frame動畫。Tween動畫,這種實現方式可以使視圖組件移動、放大、縮小以及產生透明度的變化;另一種Frame動畫,傳統的動畫方法,通過順序的播放排列好的圖片來實現,類似電影。


返回鍵與Home鍵區別?

back鍵默認行爲是finish處於前臺的Activity的即Activity的狀態爲Destroy狀態爲止,再次啓動該Activity是從onCreate開始的(不會調用onSaveInstanceState方法)Home鍵默認是stop前臺的Activity即狀態爲onStop爲止而不是Destroy,若再次啓動它,會調用onSaveInstanceState方法,保持上次Activity的狀態則是從OnRestart開始的---->onStart()--->onResume()


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。

 

說說MVC模式的原理,它在android中的運用

android的官方建議應用程序的開發採用mvc模式。mvc是model,view,controller的縮寫,mvc包含三個部分:

模型(model)對象:是應用程序的主體部分,所有的業務邏輯都應該寫在該層。
視圖(view)對象:是應用程序中負責生成用戶界面的部分。也是在整個mvc架構中用戶唯一可以看到的一層,接收用戶的輸入,顯示處理結果。
控制器(control)對象:是根據用戶的輸入,控制用戶界面數據顯示及更新model對象狀態的部分,控制器更重要的一種導航功能,響應用戶出發的相關事件,交給model處理。

android鼓勵弱耦合和組件的重用,在android中mvc的具體體現如下:

  1)視圖層(view):一般採用xml文件進行界面的描述,使用的時候可以非常方便的引入,當然,如何你對android瞭解的比較的多了話,就一定可以想到在android中也可以使用javascript+html等的方式作爲view層,當然這裏需要進行java和javascript之間的通信,幸運的是,android提供了它們之間非常方便的通信實現。

  2)控制層(controller):android的控制層的重任通常落在了衆多的acitvity的肩上,這句話也就暗含了不要在acitivity中寫代碼,要通過activity交割model業務邏輯層處理,這樣做的另外一個原因是android中的acitivity的響應時間是5s,如果耗時的操作放在這裏,程序就很容易被回收掉。

  3)模型層(model):對數據庫的操作、對網絡等的操作都應該在model裏面處理,當然對業務計算等操作也是必須放在的該層的

MVC的優點:低耦合性;高重用性和可適用性;較低的生命週期成本;快速的部署;可維護性;有利於軟件工程化管理

請介紹下Android的數據存儲方式。

Android提供了5種方式存儲數據:
1、使用SharedPreferences存儲數據;
2、文件存儲數據;
3、SQLite數據庫存儲數據;
4、使用ContentProvider存儲數據;
5、網絡存儲數據;
Android 中的數據存儲都是私有的,其他應用程序都是無法訪問的,除非通過ContentResolver獲取其他程序共享的

請介紹下ContentProvider是如何實現數據共享的。
一個程序可以通過實現一個Content provider的抽象接口將自己的數據完全暴露出去,而且Content providers是以類似數據庫中表的方式將數據暴露。Content providers存儲和檢索數據,通過它可以讓所有的應用程序訪問到,這也是應用程序之間唯一共享數據的方法。要想使應用程序的數據公開化,可通過2種方法:創建一個屬於你自己的Content provider或者將你的數據添加到一個已經存在的Content provider中,前提是有相同數據類型並且有寫入Content provider的權限。
如何通過一套標準及統一的接口獲取其他應用程序暴露的數據?Android提供了ContentResolver,外界的程序可以通過ContentResolver接口訪問ContentProvider提供的數據。


註冊廣播有幾種方式,這些方式有何優缺點?請談談Android引入廣播機制的用意。

第一種方式:在Manifest.xml中註冊廣播(用於即使應用程序關閉狀態,也需要接收到廣播的情況)第二種方式,直接在代碼中實現,但需要手動註冊註銷(用於更新可見的控件,如果不可見時就不去更新,也沒必要去更新),

Android系統中的廣播是廣泛用於應用程序之間通信的一種手段,它類似於事件處理機制,不同的地方就是廣播的處理是系統級別的事件處理過程(一般事件處理是控件級別的)。在此過程中仍然是離不開Intent對象,理解廣播事件的處理過程,靈活運用廣播處理機制,在關鍵之處往往能實現特別的效果,在Android 中如果要發送一個廣播必須使用sendBroadCast 向系統發送對其感興趣的廣播接收器中。使用廣播必須要有一個intent 對象必設置其action動作對象,每次接收廣播都會重新生成一個接收廣播的對象
在BroadCast 中儘量不要處理太多邏輯問題,建議複雜的邏輯交給Activity 或者 Service 去處理

android中有哪幾種解析xml的類,官方推薦哪種?以及它們的原理和區別

XML解析主要有三種方式,SAX、DOM、PULL。常規在PC上開發我們使用Dom相對輕鬆些,但一些性能敏感的數據庫或手機上還是主要採用SAX方式,SAX讀取是單向的,優點:不佔內存空間、解析屬性方便,但缺點就是對於套嵌多個分支來說處理不是很方便。而DOM方式會把整個XML文件加載到內存中去,這裏Android開發網提醒大家該方法在查找方面可以和XPath很好的結合如果數據量不是很大推薦使用,而PULL常常用在J2ME對於節點處理比較好,類似SAX方式,同樣很節省內存,在J2ME中我們經常使用的KXML庫來解析。

5.activity,intent,service是什麼關係

 

6.android中線程與線程,進程與進程之間如何通信
7.widget相對位置的完成在antivity的哪個生命週期階段實現
10.

11.IPC及原理

12.如何開機自動運行程序:

當Android啓動時,會發出一個系統廣播,內容爲ACTION_BOOT_COMPLETED,它的字符串常量表示爲android.intent.action.BOOT_COMPLETED。只要在程序中“捕捉”到這個消息,再啓動之即可。

13framework工作方式及原理,Activity是如何生成一個view的,機制是什麼。

14.android本身的一些限制,不如apk包大小限制,讀取大文件 時的時間限制。


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