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

news2024/12/13 14:47:46

文章目录

  • 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.coloradmin.cn/o/2258829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

opencv——识别图片颜色并绘制轮廓

图像边缘检测 本实验要用到Canny算法,Canny边缘检测方法常被誉为边缘检测的最优方法。 首先,Canny算法的输入端应为图像的二值化结果,接收到二值化图像后,需要按照如下步骤进行: 高斯滤波。计算图像的梯度和方向。非极…

【Java笔记】LinkedList 底层结构

一、LinkedList 的全面说明 LinkedList底层实现了双向链表和双端队列特点可以添加任意元素(元素可以重复),包括null线程不安全,没有实现同步 二、LinkedList 的底层操作机制 三、LinkedList的增删改查案例 public class LinkedListCRUD { public stati…

(笔记)解决select下拉框默认选中selected属性不起作用问题

在 vue3 中使用 HTML原生开发,想给 select 下拉框选中 selected 属性不起作用。这是因为 vue3中使用了 Composition API(组合式 api),而 Composition API 中的响应式数据是独立的,不会自动更新到 DOM 中。可以使用 v-m…

国科大智能设备安全-APK逆向分析实验

APK逆向分析实验 使用APK常用逆向分析工具,对提供的移动应用程序APK文件进行逆向分析,提交逆向后代码和分析报告。具体任务如下: 任务一:安装并熟悉Apktool、Jadx等APK常用逆向工具的使用方法,对提供的Facebook Updat…

黑皮书-计算机科学导论02

目录 第二部分:计算机硬件 第5章计算机组成 5.1中央处理单元 Ⅰ.算数逻辑单元 Ⅱ.控制单元 Ⅲ.寄存器 5.2主存储器 Ⅰ.随机存取存储器(RAM) Ⅱ.只读存储器(ROM) 高速缓冲存储器(Cache) 5.3输入/输出子系统 Ⅰ.非存储设备 Ⅱ.存储设备(辅助存…

解决Linux安装yum时出现apt-get install E: 无法定位软件包问题

ubuntu系统安装mysql之前安装yum,出现报错:E: 无法定位软件包问题 (1)找到源镜像,备份 cd /etc/apt/ // 切换到/etc/apt/ 目录下 sudo cp sources.list sources.list.old // 先把源文件…

[工具升级问题] 钉钉(linux版)升级带来的小麻烦

本文由Markdown语法编辑器编辑完成。 1. 背景: 今日钉钉又发布了新的升级版本。由于我工作时使用的是Ubuntu 20.04版本,收到的升级推送信息是,可以升级到最新的7.6.25-Release版本。根据钉钉官方给出的历次更新版说明,这个新的版本&#xf…

UnityShaderLab 实现黑白着色器效果

实现思路:取屏幕像素的RGB值,将三个通道的值相加,除以一个大于值使颜色值在0-1内,再乘上一个强度值调节黑白强度。 在URP中实现需要开启Opaque Texture ShaderGraph实现: ShaderLab实现: Shader "Bl…

python学习笔记—8—数字精度控制

1. %m.nd %m.nf score 100 print("socre %5d"% score) salary 6.66 print("salary %4.2f" % salary)

TMGM平台怎么样?全面解析TMGM

在选择多资产交易平台时,投资者需要综合考虑多个因素,包括平台的安全性、交易条件、客户服务等。TMGM(TradeMax Global Markets)作为一家成立于2013年的平台,在外汇、股指、商品、加密货币等多个市场领域提供交易服务。…

Spring Boot 配置多数据源并手动配置事务

Spring Boot 配置多数据源并手动配置事务 一、为什么多数据源需要手动配置?二、配置多数据源1. 数据源配置类 (DataSourceConfig)2. 主数据库 MyBatis 配置类 (PrimaryDbMyBatisConfig)3. 从数据库 MyBatis 配置类 (SecondaryDbMyBatisConfig)4. application.yml 配…

微积分复习笔记 Calculus Volume 2 - 3.6 Numerical Integration

3.6 Numerical Integration - Calculus Volume 2 | OpenStax

axios请求之参数拼接

URL 查询参数传递数据 优点: 简洁性: URL 查询参数的方式比较简洁,适合传递少量的数据。缓存友好: 查询参数可以被浏览器缓存,适合 GET 请求,但对于 POST 请求,浏览器通常不会缓存。 缺点: 数据大小限制: U…

使用硬约束的物理信息神经网络(PINNs,Physics-Informed Neural Networks)求解一维泊松方程

背景 一维泊松方程定义为: u ′ ′ ( x ) f ( x ) u(x) f(x) u′′(x)f(x),边界条件为 x 0 x0 x0 和 x 1 x1 x1 处, u ( x ) 0 u(x) 0 u(x)0,其中, f ( x ) − π 2 sin ⁡ ( π x ) f(x) -\pi^2 \sin(\pi …

基于单片机的多功能函数信号发生器的设计(论文+源码)

系统总体设计思路 在本次课题为信号发生器,其系统整体架构如图2.1所示,在硬件结构上,其主要包括核心控制器AT89C51单片机,液晶显示器LCD1602,数模转换器DAC0832,运算放大器L358以及按键、LED指示灯等器件,…

Docker 安装 sentinel

Docker 安装系列 1、拉取 [rootTseng ~]# docker pull bladex/sentinel-dashboard Using default tag: latest latest: Pulling from bladex/sentinel-dashboard 4abcf2066143: Pull complete 1ec1e81da383: Pull complete 56bccb36a894: Pull complete 7cc80011dc6f: Pull…

解读数据资产管理实践白皮书(5.0版)深入学习掌握数据资产管理知识体系。

本文介绍了数据资产管理的重要性及其概述,详细阐述了数据资产管理的活动职能包括数据模型管理、数据标准管理、数据质量管理等,并强调了数据安全管理的重要性。文章还讨论了数据资产管理的保障措施和实践步骤,以及发展趋势和总结展望。 重点内…

【大前端vue:组件】vue鼠标滑动:平滑滚动效果 向左、向右

【大前端vue&#xff1a;组件】vue鼠标滑动&#xff1a;平滑滚动效果 向左、向右 <template><div class"tab-container"><div class"tab-wrapper"><h2 class"main-title">鼠标滑动&#xff1a;平滑滚动效果 向左、向右…

python脚本:向kafka数据库中插入测试数据

# coding:utf-8 import datetime import json import random import timefrom kafka import KafkaProducer生产者demo向branch-event主题中循环写入10条json数据注意事项&#xff1a;要写入json数据需加上value_serializer参数&#xff0c;如下代码producer KafkaProducer(val…

selenium自动爬虫工具

一、介绍selenium爬虫工具 selenium 是一个自动化测试工具&#xff0c;可以用来进行 web 自动化测试、爬虫 selenium 本质是通过驱动浏览器&#xff0c;完全模拟浏览器的操作&#xff0c;比如跳转、输入、点击、下拉等&#xff0c;来拿到网页渲染之后的结果&#xff0c;可支持…