編輯:中級開發
首先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可以讓我們更了解系統底層,開發出更有競爭力的產品。
簡介: 學習了解 IBM® Rational® Rhapsody® V7.5.2 版本中的新特性與改進之處,幫助系統管理員和實時、嵌入
簡介: 一直以來,“對多個浏覽器進行測試” 像是一條難以解開的咒語,因為需要對大量浏覽器進行測試。對所有浏覽器進行測試(尤其是目前)幾乎是不可能的。但是這比您
簡介: 本文詳細介紹了 Android 應用編程中 Activity 的生命周期、通信方式和 Intent Filter 等內容,並提供了一些日常開發中經常用
Fragment是Android honeycomb 3.0新增的概念,Fragment名為碎片不過卻和Activity十分相似,下面Android123介紹下andr