天天看點

android應用開發的幾個重要概念

 1. 說說mvc模式的原理,它在android中的運用:

  答:android的官方建議應用程式的開發采用mvc模式。何謂mvc?

  mvc是model,view,controller的縮寫,mvc包含三個部分:

  1)模型(model)對象:是應用程式的主體部分,所有的業務邏輯都應該寫在該層。

  2)視圖(view)對象:是應用程式中負責生成使用者界面的部分。也是在整個mvc架構中使用者唯一可以看到的一層,接收使用者的輸入,顯示處理結果。

  3)控制器(control)對象:是根據使用者的輸入,控制使用者界面資料顯示及更新model對象狀态的部分,控制器更重要的一種導航功能,想用使用者出發的相關事件,交給m哦得了處理。

  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裡面處理,當然對業務計算等操作也是必須放在的該層的。

  2. Android的五種資料存儲方式

  答:sharedPreferences;檔案;SQLite;contentProvider;網絡

  3. 系統上安裝了多種浏覽器,能否指定某浏覽器通路指定頁面?請說明原由:

  答:通過直接發送Uri把參過去,或者通過manifest裡的intentfilter裡的data屬性。代碼如下:

  Intent intent = new Intent();

  Intent.setAction(“android.intent.action.View”);

  Uri uriBrowsers = Uri.parse(“http://www.sina.com.cn”);

  Intent.setData(uriBrowsers);

  //包名、要打開的activit

  intent.setClassName(“com.android.browser”,”com.android.browser.BrowserActivity”);

  startActivity(intent);

  4. NDK是什麼:

  答:NDK是一系列工具的集合

  NDK提供了一系列的工具,幫助開發者迅速的開發C/C++的動态庫,并能自動将so和java應用打成apk包

  NDK內建了交叉編譯器,并提供了相應的mk檔案和隔離cpu,平台等的差異,開發人員隻需簡單的修改mk檔案就可以。

  5. android view,surfaceview,glsurfaceview的差別:

  答:SurfaceView是從View基類中派生出來的顯示類,直接子類有GLSurfaceView和VideoView,可以看出GL和視訊播放以及Camera攝像頭一般均使用SurfaceView

  SurfaceView和View最本質的差別在于,surfaceView是在一個新起的單獨線程中可以重新繪制畫面而View必須在UI的主線程中更新畫面。 那麼在UI的主線程中更新畫面 可能會引發問題,比如你更新畫面的時間過長,那麼你的主UI線程會被你正在畫的函數阻塞。那麼将無法響應按鍵,觸屏等消息。

  當使用surfaceView 由于是在新的線程中更新畫面是以不會阻塞你的UI主線程。但這也帶來了另外一個問題,就是事件同步。比如你觸屏了一下,你需要surfaceView中thread處理,一般就需要有一個event queue的設計來儲存touch event,這會稍稍複雜一點,因為涉及到線程同步。 是以基于以上,根據遊戲特點,一般分成兩類。

  被動更新畫面的。比如棋類,這種用view就好了。因為畫面的更新是依賴于 onTouch 來更新,可以直接使用 invalidate。 因為這種情況下,這一次Touch和下一次的Touch需要的時間比較長些,不會産生影響。

  主動更新。比如一個人在一直跑動。這就需要一個單獨的thread不停的重繪人的狀态,避免阻塞main UI thread。是以顯然view不合适,需要surfaceView來控制。

  6. DDMS和TraceView的差別?

  答:DDMS是一個程式執行檢視器,在裡面可以看見線程和堆棧等資訊,TraceView是程式性能分析器

  7. Android dvm的程序和Linux的程序, 應用程式的程序是否為同一個概念

  DVM指dalivk的虛拟機。每一個Android應用程式都在它自己的程序中運作,都擁有一個獨立的Dalvik虛拟機執行個體。而每一個DVM都是在Linux 中的一個程序,是以說可以認為是同一個概念。

  希望以上達内總結的題型對你的安卓教育訓練學習有所幫助。

繼續閱讀