美文网首页Android基础知识记录
Android架构之framework浅谈

Android架构之framework浅谈

作者: mobile墨白 | 来源:发表于2019-06-10 21:16 被阅读0次

    Android四层架构经典图

    开局一张图,内容全靠编

    Android四层架构

    自上而下分为四层:

    • 应用程序层(application):
      最熟悉最常用的业务层。

    • 应用程序框架层(framework):
      应用程序使用的系统API框架,提供各种组件和服务,包括ActivityManager,WindowManager,ViewSystem等。

    • 系统运行层(libraries和runtime):
      1、libraries:Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用;
      2、runtime:Android的核心库ART,是Android的运行环境(虚拟机),4.4开始取代Dalvik,5.0后彻底取代,在安装APK或者动态加载DEX文件时将其中的Java方法编译为本地代码,运行程序的时候不需要再做JIT编译。

    • linux内核层(linux kernel):
      Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。


    下面我们主要梳理framework的内容:

    需要学习的内容有:进程间通信,多线程,jni,linux相关知识,binder


    framework包含的主要模块

    三大核心功能:

    • view.java:

    View工作原理,实现包括绘制view、处理触摸、按键事件等。

    • ActivityManagerService.java:

    Ams 管理所有应用程序的Activity 等,对应用进程和进程中四大组件进行管理(Activity的调度管理、Service的管理、Broadcast的分发、以及ContentProvider管理) 。

    • WindowManagerService.java:

    Wms 为所有应用程序分配窗口,并进行管理;动画处理 ;Input分发、处理;Display管理(多屏显示)。

    其他知识点简述:

    • Binder:

    每个Binder都会对应一个线程,所以一个含Activity的程序最少也有3个线程,分别是:

    • 1.ActivityThread(UI主线程 ):
      程序是从它的main()函数入口,内部有ApplicationThread类(继承IBinder)负责与AMS跨进程通信,又有H类(继承自Handler类),负责接收ApplicationThread发来的消息,实现把消息传到主线程

    • 2.ApplicationThread:
      继承于Binder,当Ams与客户端通信时(即调用客户端的方法),Ams调用的就是这个类

    • 3.ViewRoot.W:
      负责客户端与WMS的交互:内部有W类,W类继承于Binder,所以他与ApplicationThread的角色是差不多的,只不过他对应的是Wms,当Wms想与客户端进行通信的时候,Wms就调用这个类。内部又有ViewRootHandler类继承于Handler,所以他能在W类接收到Wms的消息后,把这个消息传送到UI线程中。同时界面绘制的发起点也是在这里面:performTraversals()

    • JNI:

    java本地服务,和系统运行层的c++进行交互

    相关文章

      网友评论

        本文标题:Android架构之framework浅谈

        本文链接:https://www.haomeiwen.com/subject/nhmtfctx.html