Android第三十一天

一、什麼是Android的四層體系架構?
 <1>系統核心層(Linux Kernel)
  Android系統是基於Linux內核的,這一層爲Android設備的各類硬件提供了底層的驅動,如顯示驅動、音頻驅動、照相機驅動、藍牙驅動、Wi-Fi驅動、電源管理等;
 <2>執行層C/C++函數庫層(Libraries)及Android Runtime
  這一層經過一些C/C++庫來爲Android系統提供了主要的特性支持。
 <3>應用程序框架層(Application FrameWork)
  這一層主要提供了構建應用程序時可能用到的各類 API,Android自帶的一些核心應用就是使用這些API完成的, 開發者也能夠經過使用這些API來構建本身的應用程序。
 <4>應用程序層(Applications)
  全部安裝在手機上的應用程序都是屬於這一層的。
二、什麼是Activity?
 一個Activity一般就是一個單獨的屏幕,它上面能夠顯示一些UI界面,可也以實現與用戶的交互,得到並處理用戶在屏幕上的操做,好比:點擊、長按等。
 全部應用的Activity都繼承於android.app.Activity類。
三、Android目錄結構。
 <1>src:開發人員源碼放置目錄;
 <2>gen:自動生成R.java,全部的資源文件都會在R.java文件中以final static內部類的形式被註冊。因此能夠經過R.id,R.layout等形式來訪問資源;
 <3>assets:資產目錄,在這個目錄中放置的資源文件,不會在R.java文件中被註冊。通常程序中的音頻或視頻文件能夠放置在這個目錄下;
 <4>bin:編譯後的class等文件在此目錄。系統自動生成APK;
 <5>libs:第三方jar包;
 <6>res:資源文件,是Android編程中最重要的目錄。全部的資源都定義在這個目錄下,前面提到的R.java中的內容也是根據這個目錄下的文件自動生成的。這個目錄下還有不少子目錄,圖片放在drawable目錄下,佈局放在layout目錄下,字符串放在values目錄下;
 <7>drawable:圖片放置的目錄,Android中資源的文件名【a~z0~9_.】,不能以數字和大寫字母開頭;
 <8>layout:佈局文件放置的目錄;
 <9>menu:菜單文件放置的目錄;
 <10>values:字符串、尺寸等文件放置的目錄;
 <11>AndroidManifest.xml:Android清單文件——是Android開發中很是重要的文件。
  (1)該文件中定義了本APP的版本號;
  (2)適用的手機操做系統最大及最小的兼容版本號;
  (3)整個項目中每寫一個組件,都須要在該清單文件中註冊;
  (4)運行本程序的權限等等。
 <12>project.properties:這個文件經過一行代碼指定了編譯程序時所使用的SDK版本。
4.res和assets目錄的不一樣?
 <1>是否在R.java文件中被註冊;
 <2>res所放的文件類型是規定好的,而assets目錄下放置的文件類型不限制;
 <3>訪問方法不一樣。res中文件使用R.內部靜態類.id來訪問;而assets中的文件經過IO流來訪問;
 <4>assets與res/raw目錄下的資源在編譯打包時,不會被編譯成二進制文件,因此通常在該目錄下放置音頻、視頻等文件。
5.Dalvik VM與Java VM的區別?
 <1>Dalvik和標準Java虛擬機首要差異:
  (1)Dalvik基於寄存器;
  (2)JVM基於棧;
  基於寄存器的虛擬機對於更大的程序來講,在他們編譯的時候,花費的時間更短。
 <2>Dalvik和Java字節碼的區別:
  (1)Dalvik執行.dex格式的字節碼;
  (2)JVM執行.class格式的字節碼。
 <3>Dalvik和Java SDK的SDK不一樣;
 <4>Dalvik和Java運行環境的區別:
  (1)Dalvik通過優化,容許在有限的內存中同時運行多個虛擬機的實例,而且每個Dalvik應用做爲一個獨立的Linux進程執行。獨立的進程能夠防止在虛擬機崩潰的時候全部程序都被關閉;
  (2)Dalvik虛擬機在android2.2以後使用JIT(Just-In-Time)技術,與傳統的JIT並不徹底相同;
  (3)Dalvik虛擬機有本身的bytecode,並不是使用Java bytecode。
6.Android中JAVA包功能描述。
 android.app:提供高層程序模型、提供基本的運行環境;
 android.content:對設備上的數據進行訪問和發佈的類;
 android.database:經過內容提供者瀏覽和操做數據庫;
 android.graphics:底層的圖形庫;
 android.location:定位和相關服務的類;
 android.media:管理多種音頻、視頻的媒體接口;
 android.ney:提供幫助網絡訪問的類;
 android.os:提供了系統服務、消息傳輸、IPC機制;
 android.opengl:提供OpenGL的工具;
 android.provider:提供了類訪問Android內容提供者;
 android.telephony:提供與撥打電話相關的API交互;
 android.view:提供基礎的用戶界面接口框架;
 android.util:涉及工具性的方法,例如時間日期的操做;
 android.webkit:默認瀏覽器操做接口;
 android.widget:包含各類UI元素在應用程序的屏幕中使用。
七、Android程序的核心組件有哪些?
 View:界面視圖、組織UI控件
 Intent:意圖,支持組件間通訊
 Activity:處理界面與UI互動
 Content Provider:存儲共享數據
 IntentReceiver:接受信息及事件處理
 Service:後臺服務(如硬件與驅動的服務)
八、Activity的生命週期。
 void onCreate(Bundle savedInstanceState)
 void onStart()
 void onRestar()
 void onRestart()
 void onPause()
 void onStop()
 void onDestory()
九、Android中的日誌工具類Log提供了哪些方法?
 <1>Log.v()
  用於打印那些最爲瑣碎的,意義最小的日誌信息。對應級別verbose(囉嗦的),是Android日誌裏面級別最低的一種。
 <2>Log.d()
  用於打印一些調試信息,這些信息對調試程序和分析問題是有幫助的。對應級別debug,比verbose高一級。
 <3>Log.i()
  用於打印一些比較重要的數據,這些數據應該是你很是想看到的,能夠幫你分析用戶行爲。對應級別info,比debug高一級。
 <4>Log.w()
  用於打印一些警告信息,提示程序在這個地方可能會有潛在的風險,最好去修復一下這些出現警告的地方。對應級別warn,比info高一級。
 <5>Log.e()
  這個方法用於打印程序中的錯誤信息,好比程序進入到catch語句中。若是有錯誤信息打印出來了,說明程序出現了嚴重的問題,必須儘快修復。對應級別error,比warn高一級。
十、Android的打包過程是什麼?
   jdk    dx.bat   aapt        簽名jarsigner
 .java -----> .class ------>.dex(res,assets,androidmanifest.xml)------->.apk--------->final apk
  java

相關文章
相關標籤/搜索