我的编程空间,编程开发者的网络收藏夹
学习永远不晚

什么是Android FrameWork,请你介绍一下?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

什么是Android FrameWork,请你介绍一下?

Framework是什么

Framework的中文意思是“框架”,在软件开发中通常指开发框架,在一个系统中处于内核层之上,为顶层应用提供接口,被设计用来帮助开发者快速开发顶层应用,而不必关心系统内核运行机制,通常Framework都会隐藏main函数等应用程序必须的组件,开发人员只需把精力放在功能代码的实现上。

Android Framework

Android Framework建立在顶层应用与C/C++库之间,主要由三部分组成:服务端、客户端、Linux驱动。它们的主要内容如下图所示:

APK程序的运行过程

APK程序的运行流程大概如下图所示:

需要重点说明的是,ActivityThread是一个类,实例所在线程即为UI主线程,main方法就在ActivityThread类里面,是安卓应用程序的入口。ActivityThread对象在创建之前调用的prepareMainLooper()方法会实例一个Looper对象,该Looper对象会创建一个消息队列,调用loop()方法后,UI线程会进入消息循环体,不断从消息队列里抽取消息并处理。ActivityThread的执行流程里面并没有主动创建一个Activity,而是同通过创建一个ApplicationThread的Binder监听来自远方AmS的IPC调用,在收到创建Activity消息时才开始创建一个主Activity。创建Activity的具体流程如下:

值得注意的是,W类继承Binder类,它负责接收来自WmS的IPC调用,并将消息发送至DectorView,如果DectorView没有处理,则传递给PhoneWindow,如果PhoneWindow没有处理,则继续传递给Activity,Activity通过Handler来处理此消息。

总结如下:一个安卓应用程序在运行之初总共会创建三个线程:ActivityThread、ApplicationThread、W。其中ActivityThread为UI线程,通过绑定一个Looper不断抽取消息并处理,ApplicationThread与W均为Binder类,负责与远方服务器端通信,ApplicationThread在主Activity创建之前创建,负责监听AmS传来的创建Activity消息,在Activity创建完毕后,W负责监听WmS发来的消息,并将此消息传给Activity。

服务器端

设计服务器端是为了给在安卓机上运行的众多顶层应用提供一个全局服务,主要由WmS与AmS构成,其中WmS主要负责监听与处理与窗口相关的事件(如监听用户点击、手势),AmS主要负责管理Activity(如创建Activity)。当用户在安卓机上触发一个事件时,服务端会首先获取这一事件,如果发现此事件属于某一运行中的应用程序则利用Binder机制将其发送给此应用程序处理。

WmS主要由两个类组成:KeyQ类、InputDispatcherThread类。这两个分别创建一个线程,KeyQ类负责不断将用户消息存储到QueueEvent消息队列中,InputDispatcherThread负责不断从QueueEvent中取出消息进行处理或分发给相应应用。

像 Android Framework 的中的知识点还有很多,如:

  1. Activity 生命周期:管理 Android 应用程序中 Activity 的创建、销毁、暂停、恢复等状态,确保应用程序可以正确地响应用户操作。
  2. Fragment:允许在一个 Activity 中组合多个 UI 组件布局,支持灵活的 UI 布局。
  3. Service:允许在后台执行长时间的任务或操作,如播放音乐、检查邮件等。
  4. BroadcastReceiver:监听系统广播和自定义广播,当有广播消息发送时,负责接收处理。
  5. ContentProvider:管理应用程序中的数据,提供数据存储和访问服务,实现多个应用程序数据的共享。
  6. Intent:在应用程序之间传递消息和数据,启动其他应用程序的组件,如 Activity、Service 和 BroadcastReceiver。
  7. AndroidManifest.xml 文件:存储应用程序的基本信息和配置,包括应用程序的名称、版本、权限等。
  8. R.java 文件:一个由 Android 自动生成的类,用于访问应用程序中的资源标识符,如布局、字符串、图像等。
  9. 权限管理:确保应用程序只能访问其被授权访问的数据和系统功能,防止应用程序损坏或滥用设备。
  10. 系统服务:提供各种共享系统级别的功能和服务,如网络访问服务、通知提示服务、存储管理服务等。
  11. View 和 ViewGroup:Android 中的 UI 控件基本单元,用于构建应用程序的界面和用户交互。
  12. 状态保存与恢复:当应用程序被暂停或恢复时,负责保存和恢复应用程序的状态和数据。
  13. 资源管理:管理应用程序的资源,如图片、布局、字符串等,确保资源文件可以被动态加载、修改和卸载。
  14. 事件处理:处理用户的各种输入事件,如触碰屏幕、按键事件等,响应用户的操作。
  15. 多线程编程:允许应用程序在多个线程中执行任务,充分利用硬件资源,提高应用程序的性能和响应速度。
  16. 安全性管理:确保应用程序可以正常运行,并保护用户的数据和设备不受外界威胁和攻击。
  17. 动画:增加用户体验和可视性,使应用程序更具生动性和吸引力。
  18. 自定义视图:扩展应用程序的 UI 功能,实现复杂的 UI 效果和流畅度。
  19. 通知与推送:向用户提供通知和推送消息,提升用户对应用程序的关注度和使用体验。
  20. 调试与测试:确保应用程序的稳定性和正确性,降低应用程序出现问题的风险。
  21. ……

所以为了帮助到大家更好的了解Android Framework框架中的知识点,这边查阅大量的素材,整理了一下的 Android Framework 核心知识点手册,里面记录了:有Handler、Binder、AMS、WMS、PMS、事件分发机制、UI绘制……等等,几乎把更Framework相关的知识点全都记录在册了

《Framework 核心知识点汇总手册》:https://qr18.cn/AQpN4J

Handler 机制实现原理部分:
1.宏观理论分析与Message源码分析
2.MessageQueue的源码分析
3.Looper的源码分析
4.handler的源码分析
5.总结

Binder 原理:
1.学习Binder前必须要了解的知识点
2.ServiceManager中的Binder机制
3.系统服务的注册过程
4.ServiceManager的启动过程
5.系统服务的获取过程
6.Java Binder的初始化
7.Java Binder中系统服务的注册过程

Zygote :

  1. Android系统的启动过程及Zygote的启动过程
  2. 应用进程的启动过程

AMS源码分析 :

  1. Activity生命周期管理
  2. onActivityResult执行过程
  3. AMS中Activity栈管理详解

深入PMS源码:

PMS的启动过程和执行流程
2.APK的安装和卸载源码分析
3.PMS中intent-filter的匹配架构

WMS:
1.WMS的诞生
2.WMS的重要成员和Window的添加过程
3.Window的删除过程

《Android Framework学习手册》:https://qr18.cn/AQpN4J

  1. 开机Init 进程
  2. 开机启动 Zygote 进程
  3. 开机启动 SystemServer 进程
  4. Binder 驱动
  5. AMS 的启动过程
  6. PMS 的启动过程
  7. Launcher 的启动过程
  8. Android 四大组件
  9. Android 系统服务 - Input 事件的分发过程
  10. Android 底层渲染 - 屏幕刷新机制源码分析
  11. Android 源码分析实战

来源地址:https://blog.csdn.net/weixin_61845324/article/details/130071395

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

什么是Android FrameWork,请你介绍一下?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

简单介绍一下什么是microservice微服务

这篇文章主要介绍了一下什么是microservice微服务微服务的定义
2023-03-21

面试官:你用过mysql哪些存储引擎,请分别展开介绍一下

这是高级开发者面试时经常被问的问题。实际我们在平时的开发中,经常会遇到的,在用SQLyog等工具创建表时,就有一个引擎项要你去选。如下图:Mysql的存储引擎有这么多种,实际我们在平时用的最多的莫过于InnoDB和MyISAM了。所有如果面试官问道mysql有
面试官:你用过mysql哪些存储引擎,请分别展开介绍一下
2019-04-15

介绍一下TensorFlow的Eager Execution模式是什么以及它的优势。

TensorFlow的Eager Execution(即立即执行模式)是一种命令式编程环境,它允许在运行时立即执行操作,而不需要构建计算图。在Eager Execution模式下,TensorFlow会立即返回结果,而不是像传统的延迟执行模
介绍一下TensorFlow的Eager Execution模式是什么以及它的优势。
2024-03-01

什么是uac功能?Vista下的UAC功能详细介绍

UAC是什么? UAC的全称是User Account Control(用户账户控制),它是Windows Vista提供的一个安全特性。它会在用户使用计算机进行更改系统设置或者安装软件等会影响到系统安全性、稳定性的操作时弹出一个对话框,友
2023-05-22

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录