当前位置: 首页 > news >正文

Android系统(android app和系统架构)

文章目录

  • Android
    • Android Apps
    • 四大组件
  • Android系统
    • Platform API之下:一个微笑内核
    • adb(Android Debug Bridge)
  • Android包管理机制
  • Android的Intent机制
  • 参考

Android

Linux+Framework+JVM

  • 在Linux/Java上做了个二次开发?
  • 并不完全是:Android定义了应用模型
    ·
    支持Java是一个非常高瞻远瞩的决定
  • QualcommMSM7201
    ARMv6指令集
    528MHz×1CPU,顺序八级流水线
    TSMC 90nm
  • “跑个地图都会卡”
    但摩尔定律生效了!

操作系统OS含义,为APP提供服务,为APP提供运行环境,为下层Linux提供支撑就是OS,比如Android OS,浏览器也是OS

Android Apps

一个运行在Java虚拟机(AndroidRuntime)上的应用程序

  • Platform(Framework)
  • NDK(NativeDevelopmentKit)
  • Java Native Interface(C/C++代码)

官方文档(RTFM)

  • Kotlin
  • Platform
    (1)android.view.View:“the basic building block for user interface components"
    (2)android.webkit.WebView-嵌入应用的网页
    (3)android.hardware.camera2-相机
    (4)android.database.database-数据库

四大组件

Activity

  • 应用程序的UI界面(EventDriven)
  • 存在一个ActivityStack(应用拉起)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Service

  • 无界面的后台服务

Broadcast

  • 接受系统消息,做出反应
    例如“插上电源”、“Wif断开”

ContentProvider
·可以在应用间共享的数据存储(insert,update,query.,…)

eg:计算器
下面的可视窗口,有的显示器较小,有的显示器较大,Android会帮助我们自动完成这种适配
在这里插入图片描述

  • AndroidManifest.xml-应用的“元数据”2
    例如需要的权限、监听的Intents等

  • res-资源文件
    各国语言的翻译
    图片文件(例如图标)

编写应用逻辑只需要重载Activity的onCreate,…即可

Android系统

Platform API之下:一个微笑内核

通过“BinderIPC"

  • Remote Procedure Call (RPC)
    remote.transact()

通过“BinderIPC",在性能优化和易用之间的权衡

  • 注册机制
    相比之下,管道/套接字就太“底层”了,需要手工管理的东西太多

  • 基于共享内存实现
    Linux Kernel binder driver

  • 服务端线程池

Android Runtime(JVM)=Java VM(编写APP用的,使用Kotlin/Java开发)+Platform API

adb(Android Debug Bridge)

  • adb push/pull/install
    ·adb shell
    screencap/sdcard/screen.png
    sendevent
  • adb forward
  • adb logcat/jdwp

一系列衍生的工具

  • 开发者选项
  • scrcpy
  • Monkey/Ul Automator

Android包管理机制

在这里插入图片描述
Android包管理主要体现在以下几个部分:

  • 1.系统启动过程中PKMS对系部分统配置文件进行读取,如package.xml文件,然后对外提供app信息查询接口(IPackageManager).
  • 2.提供apk/apex的安装,更新,卸载等操作api接口(IPackageInstaller),apex是谷歌提供的类似apk的系统更新模块。
  • 3.应用运行过程中对系统权限的检查

installd进程 的执行权限为 root,所有实际的应用安装,卸载等操作都是通过这个服务进行的。 PKMS只是java层的封装。

Android的Intent机制

Android的Intent机制最核心的设计思想,就是引入了组件管理服务作为连接组件的管理者。该服务可以通过组件的配置信息了解系统中每个组件的类别和功能,从而帮助调用组件寻找符合其需求的实现组件,将调用者与实现者彻底解耦。

在这里插入图片描述

优点:
Intent是Android应用模型的核心,解决了组件间的连接问题。通过组件管理服务提供的Intent匹配策略,降低了组件间的耦合度,提高了平台的灵活性,增强了组件的复用性,从根本上减轻了应用开发的负担。

eg:
在这里插入图片描述
点击精确Intent,成功跳转到另一个应用中。
点击模糊Intent,出现组件选择列表,

如下图:
在这里插入图片描述

参考

  • Android 系统 (Android App 和系统架构;应用后台保活)
  • 基于Android T:包管理机制详解(上)
  • 基于Android T:包管理机制详解(下)
  • 【Android开发日记】之入门篇(十一)——Android的Intent机制
http://www.lryc.cn/news/504680.html

相关文章:

  • Android HandlerThread、Looper、MessageQueue 源码分析
  • HTML知识点详解教程
  • [数据结构#1] 并查集 | FindRoot | Union | 优化 | 应用
  • 科研绘图系列:R语言绘制网络图和密度分布图(network density plot)
  • Linux中输入和输出基本过程
  • 使用 acme.sh 签发和自动续期 ssl https 证书
  • spring重点面试题总结
  • 新的一章:codegeex
  • 游戏引擎学习第50天
  • 快速理解类的加载过程
  • 医院跌倒检测识别 使用YOLO,COCO ,VOC格式对4806张原始图片进行标注,可识别病人跌倒,病人的危险行为,病床等场景,预测准确率可达96.7%
  • [Unity Shader] 【游戏开发】【图形渲染】Unity Shader的种类2-顶点/片元着色器与固定函数着色器的选择与应用
  • 浏览器端的 js 包括哪几个部分
  • GoogLeNet网络:深度学习领域的创新之作
  • 深入C语言文件操作:从库函数到系统调用
  • Java序列化
  • 基坑表面位移沉降倾斜自动化监测 非接触式一体化解决机器视觉
  • 提升效率:精通Windows命令行的艺术
  • ESP32-S3-devKitC-1 点亮板上的WS2812 RGB LED
  • python调用matlab函数(内置 + 自定义) —— 安装matlab.engine
  • CAD c# 生成略缩图预览
  • 端点鉴别、安全电子邮件、TLS
  • 汽车电子元件的可靠性保障:AEC-Q102认证
  • 主成分分析法大全(包括stata+matlab)
  • ubuntu+ros新手笔记(五):初探anaconda+cuda+pytorch
  • C++ List(双向链表)
  • ASP.NET|日常开发中读写TXT文本详解
  • 【机器学习】在不确定的光影中:机器学习与概率论的心灵共舞
  • 【论文笔记】Editing Models with Task Arithmetic
  • ESP32外设学习部分--UART篇