第一部分 libutils概述

  libutils是Android的底层库,这个库以C++实现,它提供的API也是C++的。Android的层次的C语言程序和库,大都基于libutils开发。
  libutils中的头文件如下所示:
  frameworks/base/include/utils
  libutils的源文件:
  frameworks/base/libs/utils
  libutils的库名称:
  libutils.so
  这个库可以分成两个部分,一个部分是底层的工具,另外一个就是实现主要为实现IPC(进程间通讯)的Binder机制。

  第二部分 公共库概述

  libutils中的公共库部分主要包含的头文件如下所示:
  Errors.h:定义宏表示错误代码
  Endian.h:定义表示大小端的宏
  misc.h:几个字符串和文件相关的功能函数

  TextOutput.h:定义文本输出的基类TextOutput
  BufferedTextOutput.h:类BufferedTextOutput,它是一个TextOutput的实现
  Pipe.h:定义管道类Pipe
  Buffer.h:定义内存缓冲区域的类Buffer
  List.h:定义链表的模版类

  SharedBuffer.h:定义类SharedBuffer表示共享内存。
  String16.h:定义表示双字节字符串的类String16
  String8.h:定义表示单字节字符串的类String8,并包含了从String16转换功能

  VectorImpl.h:定义表示向量的类VectorImpl
  Vector.h:定义继承VectorImpl的类模版Vector,以及排序向量类SortedVectorImpl
  SortedVector.h:定义排序向量的模版SortedVector
  KeyedVector.h:定义使用关键字的向量模板KeyedVector

  threads.h:定义线程相关的类,包括线程Thread、互斥量Mutex、条件变量Condition、读写锁      ReadWriteLock等
  socket.h:定义套结字相关的类Socket
  Timers.h:定义时间相关的函数和定时器类DurationTimer。
  ZipEntry.h、ZipFileCRO.h、ZipFile.h、ZipFileRO.h、ZipUtils.h:与zip功能相关的类。

  第三部分 Binder进程间通讯部分

  Binder是进程间通讯部分的核心,它为不同的系统提供了可移植的进程间通讯手段。
  RefBase.h :
  引用计数,定义类RefBase。
  Parcel.h :
  为在IPC中传输的数据定义容器,定义类Parcel
  IBinder.h:
  Binder对象的抽象接口, 定义类IBinder
  Binder.h:
  Binder对象的基本功能, 定义类Binder和BpRefBase
  BpBinder.h:
  BpBinder的功能,定义类BpBinder
  IInterface.h:
  为抽象经过Binder的接口定义通用类,
  定义类IInterface,类模板BnInterface,类模板BpInterface
  ProcessState.h
  表示进程状态的类,定义类ProcessState
  IPCThreadState.h
  表示IPC线程的状态,定义类IPCThreadState

  IServiceManager.h:表示服务管理器的类,供其它需要构造服务的类使用
  IPermissionController.h:权限控制类。

几个与内存相关的类的头文件如下所示:
  IMemory.h:定义内存相关类的接口,表示堆内存的类IMemoryHeap和BnMemoryHeap,表示一般内存的类

  IMemory和BnMemory。
  MemoryHeapBase.h:定义类MemoryHeapBase,继承并实现BnMemoryHeap
  MemoryBase.h:定义类MemoryBase,继承并实现BnMemory
  在一般的使用过程中,通常是以使用MemoryHeapBase类分配一块堆内存(类似malloc),而MemoryBase表示从一块分配好堆内存中的一部分内存。

  此外内存相关的功能中还包含了头文件MemoryDealer.h和MemoryHeapPmem.h。

Android的底层库libutils介绍的更多相关文章

  1. Parse发布Bolts,一个面向iOS和Android的底层库集合

    转载自:http://www.infoq.com/cn/news/2014/02/parse-announces-bolts 数月前,Parse被Facebook收购.最近,它开源了一个面向iOS和A ...

  2. 【转】Android底层库和程序

    原文网址:http://blog.csdn.net/louiswangbing/article/details/6616202 Android底层库和程序 1.     本地实现的基本结构 Andro ...

  3. Android开源图表库介绍

    XCL-Charts XCL-Charts V1.8     Android开源图表库(XCL-Charts is a free charting library for Android platfo ...

  4. Android 第三方开源库收集整理(转)

    原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样,  ...

  5. Android中View和ViewGroup介绍

    1. 概念Android中的View与我们以前理解的“视图”不同.在Android中,View比视图具有更广的含义,它包含了用户交互和显示,更像Windows操作系统中的window. ViewGro ...

  6. Android的多媒体框架OpenCore介绍

    网上资料很少, 不过还是找到一个比较详细的说明: 特地在此整理了下: 地址:http://blog.csdn.net/djy1992/article/details/9339787 分为几个阶段: 1 ...

  7. Android系统性能调优工具介绍

    http://blog.csdn.net/innost/article/details/9008691 经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优 ...

  8. Android进阶笔记02:Android 网络请求库的比较及实战(二)

    一.Volley        既然在android2.2之后不建议使用HttpClient,那么有没有一个库是android2.2及以下版本使用HttpClient,而android2.3及以上版本 ...

  9. [置顶] android调用第三方库——第四篇——调用多个第三方库

    0:前言: 在前面三篇中我们介绍了android调用第三方库的形式,在这一篇中我们介绍调用多个第三方库的Android.mk的写法,由于其他三篇介绍的很详细,这里只给出Android.mk的内容. [ ...

随机推荐

  1. F1

    ----------------------------------------------------------------------------Welcome to the MASM32 SD ...

  2. Codeforces Round #333 DIV2

    D: B. Lipshitz Sequence time limit per test 1 second memory limit per test 256 megabytes input stand ...

  3. 活动图 Activity Diagram

    活动图 可通过一系列操作将业务流程或软件进程以工作流的形式显示出来.这些操作可以由人.软件组件或计算机来执行. 使用活动图可以描述多种类型的流程,如下: 1.用户和您的系统之间的业务流程或工作流. 2 ...

  4. oracle 常用SQL语法手册

    Select 用途: 从指定表中取出指定的列的数据 语法: SELECT column_name(s) FROM table_name 解释: 从数据库中选取资料列,并允许从一或多个资料表中,选取一或 ...

  5. android 中使用回调方法(适用于自定义view传值到activity、adapter传值到activity)

    如图所示: 每当listview中有选中的操作时都需要发消息给activity,用来实时改变真实需要支付的剩余金额. 代码暂不公开啦!公司项目!

  6. mysql myisam

    .frm .myd .myi insert delayted show variables like '%delayed%' lock read, write, read local pointer ...

  7. C# 数据结构--排序[上]

    概述 看了几天的排序内容,现在和大家分享一些常见的排序方法. 啥是排序? 个人理解的排序:通过对数组中的值进行对比,交换位置最终得到一个有序的数组.排序分为内存排序和外部排序.本次分享排序方法都为内存 ...

  8. [C/CPP系列知识] 那些程序C语言可以编译通过但C++无法编译成功 Write a C program that won’t compile in C++

    http://www.geeksforgeeks.org/write-c-program-wont-compiler-c/ 1) C++中在函数声明之前调用一个函数会引发错误,但是在C中有可能可以. ...

  9. ReplicaManager之DelayedOperation

    DelayedOperation包括两种:DelayedFetch和DelayedProduce,它们的存在是由Kafka Protocol决定的,而Kafka Protocol是由实际需求决定的…… ...

  10. c# 4.0新特性一览

    原文:http://www.cnblogs.com/palo/archive/2009/03/01/1400949.html 终于静下心来仔细听了一遍Anders Hejlsberg(Visual S ...