Android框架层学习指导
来源:互联网 发布:四川网络大学考试平台 编辑:程序博客网 时间:2024/06/17 06:35
from:http://www.android123.com.cn/androidkaifa/918.html
很多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可以让我们更了解系统底层,开发出更有竞争力的产品。
- Android框架层学习指导
- Android框架层学习指导
- android学习的有关书籍--框架层
- Android Framework学习指导
- Android学习基本路线指导
- Android学习路线指导
- Android 四层框架
- Android 4层框架
- Android 4层框架
- android应用程序框架层创建的应用程序进程学习
- 指导框架
- NET 应用架构指导 V2 学习笔记(十一) 业务逻辑层指导
- Mars老师的Android学习基本路线指导
- Mars老师的Android学习基本路线指导
- android 学习书籍推荐 求指导
- android orm持久层框架
- Android几大框架层
- android的四层框架
- java中“==”和equals方法有什么区别
- Mina自定义文本编解码
- DOCTYPE作用及用法详解
- 剑指offer面试题22栈的压入弹出序列
- TCP协议学习之 nagle算法
- Android框架层学习指导
- 大话设计模式 迭代器模式
- AVL树
- Java是解释型语言还是编译型语言
- JAVA基础学习之多态
- CORS(跨源资源共享)
- linux 中的if else语句
- 互联网/移动互联网经营的本质是经营消费者的时间价值
- volatile关键字