Android: Framework层理解(一)

   不管你是做手机系统开发还是APP开发,Framework层你肯定会碰到。除非你所做的事情只是UI的优化。
   那么Framework具体的工作是做什么呢? 简单一句话:提供Android开发人员一系列的服务和API的接口。
   关于API接口如何查看:如何查看Android API文档以及Android5.0新增加的API接口:Android 5.0 新增和改进的API,感兴趣的同志可以看下。

   现在许多厂商一般是做代码移植,然后可能会根据自己产品的特点在frameworks及整个平台里加自己的扩展功能。frameworks层多数是Java代码。下面是frameworks的结构图:

  Framework定义了客户端组件和服务端组件功能及接口。包含3个主要部分:服务端,客户端和Linux驱动。

  一:服务端

服务端主要包含两个重要类,分别是WindowManagerService(Wms)和ActivityManagerService(Ams)。Wms的作用是为所有的应用程序分配窗口,并管理这些窗口。包括分配窗口大小,调节各窗口的叠放次序,隐藏或显示窗口。Ams的作用是管理所有应用程序中的Activity。

除此之外,在服务端还包括2个消息处理类:
1)KeyQ类:

该类为Wms的内部类,继承于KeyInputQueue类, KeyQ对象一旦创建,就立即启动一个线程,该线程会不断地读取用户的UI操作消息,比如按键、触摸屏、trackball、鼠标等,并把这些消息放到一个消息队列QueueEvent类中。

2)InputDispatcherThread类:

该类的对象一旦创建,也会立即启动一个线程,该线程会不断地从QueueEvent中取出用户消息,并进行一定的过滤(用Wms中相应函数处理),过滤后,再将这些消息发给当前活动的客户端程序中。

  二:客户端

  客户端主要包括以下重要类:

1)ActivityThread类:

    该类为应用程序的主线程类,所有的Apk程序有且只有一个ActivityThread类,程序的入口为该类中的static main()函数。
2)Activity类:

    该类为APK程序的一个最小运行单元,一个APK程序中可以包含多个Activity对象,ActivityThread主类会根据用户操作选择运行哪个Activity对象。
3)PhoneWindow类:

    该类继承与Window类,同时,PhoneWindow类内部包含了一个DecorView对象。简而言之,PhoneWindow是把一个FrameLayout进行了一定的包装,并提供了一组通用的窗口操作接口。
4)Window类:

    该类提供了一组通用的窗口(Window)操作API, 这里的窗口仅仅是程序层面上的,Wms所管理的窗口并不是Window类,而是一个View或者ViewGroup类,一般就是指DecorView类,即一个DecorView就是Wms所有管理的一个窗口。Window是一个abstract类型。

5)DecorView类:

    该类是一个FrameLayout的子类,并且是PhoneWindow中的一个内部类。Decor的英文是Decoration, 即“修饰”的意思,DecorView就是对普通的FrameLayout进行了一定的修饰,比如添加一个通用的TitleBar, 并响应特定的按键消息等。

6)ViewRoot类:

    Wms管理客户端窗口时,需要通知客户端进行某种操作,这些都是通过异步消息完成的,实现方式就是使用Handler, ViewRoot就是继承于Handler,其作用主要是接收Wms的通知。

7)W类:

    该类继承于Binder, 并且是ViewRoot的一个内部类。

8)WindowManager类:

    客户端要申请创建一个窗口,而具体创建窗口的任务是由Wms完成的,WindowManager类就像是一个部门经理,谁有什么需求就告诉它,由它和Wms进行交互,客户端不能直接和Wms进行交互。

  三:Linux驱动

  Linux驱动和Framework相关的主要包含两部分,分别是SurfaceFlingger(SF)和Binder。每一个窗口都对应一个Surface, SF驱动的作用是把各个Surface显示在同一屏幕上。Binder驱动的作用是提供跨进程(IPC)的消息传递机制。


 

  • 24
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Android Framework是指Android操作系统中提供的一套API和工具集合,可以帮助开发者快速构建Android应用程序。底开发主要涉及到Android Framework的源代码和相关文档,本质上是深入了解Android操作系统原理和架构,具有较高的技术门槛。 探索Android Framework开发可以帮助开发者更好地理解Android的运行原理,提高代码质量和效率。具体来说,需要掌握以下几个方面: 1. Java编程语言:Android开发是基于Java的,需要掌握Java的语法和开发环境。 2. Android系统架构:了解Android系统的四架构是必要的,包括应用、框架系统运行库和Linux内核。 3. Android Framework的API:掌握常用的Android Framework的API,如Activity、Service、BroadcastReceiver等。 4. Android框架源代码:深入了解Android框架的源码实现,可以帮助开发者更好地掌握Android系统的工作机制和运行原理。 5. Android开发工具:熟练掌握Android Studio等开发工具,可以提高Android开发的效率和质量。 总之,探索Android Framework开发是一个深入了解Android操作系统原理和架构的过程,需要不断学习和实践才能不断提高自己的技术水平。 ### 回答2: Android开发需要具备一定的计算机基础知识和编程技能。Android 应用程序由 Android FrameworkAndroid 应用程序组成,Android Framework 包含了很多核心组件和类库,例如 Activity、Service 和 ContentProvider 等。 若要深入探究 Android Framework,我们需要从底的 Linux 内核开始了解。因为 Android 基于 Linux 内核设计,所以我们需要了解 Linux 内核的结构和原理,熟悉 Linux 的命令行操作。接着,我们需要掌握 Java 编程语言的基础知识,了解 Android 的四大组件和应用开发模式。 此外,我们还需要了解 Android Framework 最核心部分的 Binder 服务。Binder 运行在 Linux 内核空间中,用于在 Android 应用程序Android Framework 之间传递信息。理解 Binder 的运作原理将对深入理解 Android Framework 有很大帮助。 探索 Android Framework开发需要不断学习和实践。建议参考 Android 官方文档、查阅相关书籍和博客,积极参与开源社区和论坛,不断提高自己的技能和水平。只有积累了足够的经验和技能,才能够开发出高质量的 Android 应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值