分享

Android框架层学习指导

 quandsu 2013-08-27

很多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++这些都是小儿科了,比如

C/C++代码
  1.   template <typename T> class sp;  
  2. template <typename T> struct trait_trivial_move< sp<T> >{  
  3.     enum { value = true };   
  4. };  
  5. // wp<> can be trivially moved  
  6. template <typename T> class wp;  
  7. template <typename T> struct trait_trivial_move< wp<T> >{   
  8.     enum { value = true };   
  9. };  


3. 当然基本的C++设计模式,CWJ推荐大家还是要掌握的,比如说单件模式在C++中,可以在Singleton.h文件中写到,

  

C/C++代码
  1. template <typename TYPE>  
  2. class Singleton  
  3. {  
  4. public:  
  5.     static TYPE& getInstance() {  
  6.         Mutex::Autolock _l(sLock);  
  7.         TYPE* instance = sInstance;  
  8.         if (instance == 0) {  
  9.             instance = new TYPE();  
  10.             sInstance = instance;  
  11.         }  
  12.         return *instance;  
  13.     }  
  14.       
  15. protected:  
  16.     ~Singleton() { };  
  17.     Singleton() { };  
  18. private:  
  19.     Singleton(const Singleton&);  
  20.     Singleton& operator = (const Singleton&);  
  21.     static Mutex sLock;  
  22.     static TYPE* sInstance;  
  23. };  

4. 所有的结构h文件看完后,可以转向base的libs目录,这里对应的是相应的cpp文件,里面包含着具体的实现。

5. Android Framework可以让我们更了解系统底层,开发出更有竞争力的产品。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多