FrameWork概述

2018-10-14  本文已影响7人  咸鱼佬

此文为Android内核剖析学习

导语

任何控制程序都有一个入口,C程序的入口只能是main函数,并且只能有一个main函数,Java的入口静态函数main

依赖于操作系统的程序,客户端除了包含一个入口外,还需要与相关的系统服务一起运行,以完成指定的任务,win32 程序需要和Gui 系统服务一起实现带窗口的功能

那么Android 程序也是不例外,程序入口在哪呢

Framework 框架

Framewoke 定义了客户端组件和服务端组件功能以及接口
框架中包含三个主要部分,服务端,客户端,Linux驱动

服务端

服务端最主要两个类WindowManagerService(WmS)和ActivityManagerService(AmS)
wms负责各个窗口的叠放次序,隐藏或显示窗口
ams 管理所有应用程序的Activity

客户端

Linux驱动

主要的部分是SurfaceFlingger(SF)和Binder,每一个窗口对应一个Surface,而sf的作用就是把各个Surface显示在同一个屏幕上。Binder的作用就是进程间通信的'桥梁'

APK程序的运行过程

飞机票

客户端中的线程

客户端至少包含三个线程,ApplicationThread(继承Binder),RootView.W(继承Binder),这两个类在app启动的时候被实例化,然后开启各自开启一个线程用于接收ipc通信(一个与ams,一个与wms),还有一个线程就是ui线程了

image

几个常见的问题

Activity之间如何传递消息

这个提问本身有问题,一般来说“传递消息”一般是指多个线程之间,而Activity本身并不是线程,只是一个类而已(比较特殊的类而已)。

那么对于类,怎么传递消息?

  1. 聚合/组合呗
  2. 第三方类保存两个Activity之间的需要传递的数据

然而对于Activity一般不能直接由程序员实例化(Framework实例化),那么只能是第二种方法
Intent 类就是这个第三方类

窗口相关的概念

http://blog.csdn.net/android_jiangjun/article/details/45798221

上一篇下一篇

猜你喜欢

热点阅读