Android 學習筆記【基礎掃盲篇】

前一段時間斷斷續續的看過幾天android,因爲不連貫,效果不是很好,最近打算用一個月的時間系統的學習一下。 

一、android的生態系統  
Android是由Google在2007年推出的一個開源系統平臺,主要針對移動設備市場,如今的最新版本是Android 3.2,android底層基於精簡優化過的Linux kernel 2.6。android系統架構如圖: 

 
從圖上能夠看出來,整個系統分爲4層 
(1)、Linux Kernel 
       該層是使用google本身精簡優化過的linux系統,使其更適合內存和電量有限的移動設備 
主要是負責系統底層的內存管理,安全管理,進程調度以及硬件進行通信等等,並對其上層提供服務。 
(2)、android Runtime  
      包含兩部分: 
      一、core Libraries(核心庫),該核心庫提供大部分在Java編程語言核心類庫中可用的功能。 
     二、Dalvik 虛擬機。Dalvik是Google公司本身設計用於Android平臺的Java虛擬機,Dalvik 通過優化,容許在有限的內存中同時運行多個虛擬機的實例,而且每個Dalvik 應用做爲一個獨立的Linux 進程執行。獨立的進程能夠防止在虛擬機崩潰的時候全部程序都被關閉。
 
     Dalvik和JVM的幾點區別 
      一、Dalvik 基於寄存器,而 JVM 基於棧。基於寄存器的虛擬機對於更大的程序來講,在它們編譯的時候,花費的時間更短。 
     二、Dalvik主要是完成對象生命週期管理,堆棧管理,線程管理,安全和異常管理,以及垃圾回收等等重要功能。 
     三、Dalvik負責進程隔離和線程管理,每個Android應用在底層都會對應一個獨立的Dalvik虛擬機實例,其代碼在虛擬機的解釋下得以執行。 
     四、不一樣於Java虛擬機運行java字節碼,Dalvik虛擬機運行的是其專有的文件格式Dex,ex文件格式能夠減小總體文件尺寸,提升I/o操做的類查找速度。 
     五、全部的Android應用的線程都對應一個Linux線程,虛擬機於是能夠更多的依賴操做系統的線程調度和管理機制
 
(3)、Libraries  
    Android包含一個C/C++庫的集合,供Android系統的各個組件使用。例如: 
    libc:這是系統的C庫,Media Framework: 媒體庫,SurfaceManager 顯示系統管理庫,負責把2D或3D內容顯示到屏幕,WebKit,瀏覽器內核等不一樣的庫。供上層調用 
(4)、Application Framework  
    應用程序框架,也是咱們開發的時候打交道最多的,給咱們提供裏豐富多彩的應用程序API,經過這些咱們能夠作出豐富多彩的應用。 
   Activity Manager(活動管理器),主要負責程序生命週期的管理。 
   Content Providers (內容提供者),使應用程序能訪問其餘應用程序(如通信錄)的數據,或共享本身的數據 
   Resource Manager (資源管理器),提供訪問非代碼資源,如本地化字符串、圖形和佈局文件 
   View (試圖),豐富的、可擴展的視圖集合,可用於構建一個應用程序。包括包括列表、網格、文本框、按鈕,甚至是內嵌的網頁瀏覽器 
(5)Applications  
   四層中的最上層,在系統中安裝的應用程序,就位於該層,咱們之後寫的程序也基本在該層運行,所有由Java語言編寫,固然Android也容許用戶使用C和C++編寫程序的。 
  
二、android應用程序的目錄結構  
 
一、src  : 沒什麼好說的,就是咱們的源代碼了 
二、gen  : 不知道gen是否是generate的縮寫,gen目錄存放系統自動維護的一些文件,主要是 R.java。R文件由ADT自動維護,主要是爲res目錄下面的xml,圖像,媒體等文件同步生成一個相似字典的東西,系統中對這些資源的引用能夠經過R文件來操做。在編譯的時候會對R文件進行檢查,若是R文件中沒有引用的資源不會被編譯打包,以節省系統資源,另外,R文件只有一個,咱們不須要也不要去改裏面的內容。 
三、assets :assets也是一個資源文件夾,assets中的資源能夠被打包到程序裏面,和Res不一樣的地方是,ADT會爲res下面的文件在R文件中生成一個ID,而不會爲assets中的資源生成ID,所以要使用該目錄下面的文件,須要經過完整路徑的方式進行調用。(該目錄下面的文件不會被編譯,直接複製到程序安裝包中) 
四、res :資源目錄(咱們不能在Res目錄下面創建自定義目錄,以及爲已有的目錄創建子目錄) 
      drawable: 主要存放不一樣分辨率的圖片文件 
             (1)drawable-hdpi裏面存放高分辨率的圖片,如WVGA (480x800),FWVGA480x854) 
           (2)drawable-mdpi裏面存放中等分辨率的圖片,如HVGA (320x480) 
           (3)drawable-ldpi裏面存放低分辨率的圖片,如QVGA (240x320) 
      layout: 存放用於佈局的xml文件 
      values: 用於存放一些常量(不一樣類型的變量存放在不一樣的文件中) 
               strings.xml 定義字符串和數值 
               arrays.xml 定義數組 
               colors.xml 定義顏色和顏色字串數值 
               dimens.xml 定義尺寸數據 
               styles.xml 定義樣式 
      anim: 存放一些和動畫有關的xml文件 
      xml: 存放一些自定義的xml文件 
      raw: 該目錄下面的文件不會被編譯,直接複製到程序安裝包中。 

五、AndroidManifest.xml  
  
Xml代碼    收藏代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.      package="com.cheney.weiboo"  
  4.      android:versionCode="1"  
  5.      android:versionName="1.0">  
  6.    <uses-sdk android:minSdkVersion="4" />  
  7.   
  8.    <application android:icon="@drawable/icon" android:label="@string/app_name">  
  9.        <activity android:name=".IndexActivity"  
  10.                  android:label="@string/app_name">  
  11.            <intent-filter>  
  12.                <action android:name="android.intent.action.MAIN" />  
  13.                <category android:name="android.intent.category.LAUNCHER" />  
  14.            </intent-filter>  
  15.        </activity>  
  16.    </application></manifest>  


xmlns:android:包含命名空間的聲明。xmlns:android="http://schemas.android.com/apk/res/android",使得Android中各類標準屬性可以在文件中使用,提供大部分元素的數據。  package:聲明應用程序包。  application:包含package中application級別組件聲明的根節點。此元素耶可包含application的一些全局和默認的屬性,如標籤、icon、主題、必要權限等。一個manifest可以包含零個或一個此元素,不能大於一個。  android:icon:應用程序圖標。  android:lebel:應用程序名字。  Activity:註冊系統中的activity,全部的activity都要在此文件中註冊。  android:name:activity的名字,即類名。  intent-filter:聲明瞭指定一組組件支持的Intent值,從而造成IntentFilter。  action:組件支持的Intent action 。  category:組件支持的Intent Category。  uses-sdk: 應用程序所使用的sdk版本。
相關文章
相關標籤/搜索