Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 中級開發 >> Android框架層學習指導

Android框架層學習指導

編輯:中級開發

很多android開發者可能覺得僅僅了解Java層還不夠,這裡Android123結合源碼幫助大家如何了解android Framework層。

   首先Android開發網提示大家需要了解哪些前置知識,首先要有C++基礎,如果你只會C,可能對於C++ STL標准庫,以及模板和泛型的理解會吃力很多,同時要有OOP的思想否則看android這樣的大工程可能無法很好的組織,這點可以通過h文件畫出UML圖來快速了解整個結構。

  1. 首先我們從android GIT源碼托管站點下載Framework層的源碼,在base.git包

  2. 對於android來說,Google內部使用C++有些類似STL,因為部分用到了只是再次封裝,這裡建議大家直接看base中的include目錄下的utils裡的文件,比如說String8.h、String16.h、Vector.h、KeyedVector.h以及TypeHelpers.h

  這裡String8和String16和STL中的String相比,提供了更多的輔助方法,相比標准庫更完善些,其中有些類似uint8_t、uint_16t和uint32_t這裡我們可以理解為VC中的char、short和int,就是8位、16位和32位的整形,主要是標示的范圍不同,使用更小的單位可以更節省內存開銷,對於系統來說這是十分重要的,對於Vector和STL中的vector功能上是相同的,而KeyedVector我們當做stl中的map去對待即可,本身就是一個哈希映射類型,下面Android123要強調的就是TypeHelpers這個文件,裡面封裝的sp模板和wp模板,很多源碼中會有類似  static  sp<Camera> 這樣的定義,就需要深入的了解下android的SP了,如果你真的會C++這些都是小兒科了,比如

  template <typename T> class sp;
template <typename T> struct trait_trivial_move< sp<T> >{
    enum { value = true };
};

// wp<> can be trivially moved
template <typename T> class wp;
template <typename T> struct trait_trivial_move< wp<T> >{
    enum { value = true };
};

3. 當然基本的C++設計模式,CWJ推薦大家還是要掌握的,比如說單件模式在C++中,可以在Singleton.h文件中寫到,


template <typename TYPE>
class Singleton
{
public:
    static TYPE& getInstance() {
        Mutex::Autolock _l(sLock);
        TYPE* instance = sInstance;
        if (instance == 0) {
            instance = new TYPE();
            sInstance = instance;
        }
        return *instance;
    }
   
protected:
    ~Singleton() { };
    Singleton() { };

private:
    Singleton(const Singleton&);
    Singleton& Operator = (const Singleton&);
    static Mutex sLock;
    static TYPE* sInstance;
};

4. 所有的結構h文件看完後,可以轉向base的libs目錄,這裡對應的是相應的cpp文件,裡面包含著具體的實現。

5. android Framework可以讓我們更了解系統底層,開發出更有競爭力的產品。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved