Android应用程序构成

Android程序结构 Project方式 .gradle文件夹:编译相关生成 .idea文件夹:idea生成 app文件夹----应用程序的源代码和资源 build----编译后的文件存放的位置,最终apk文件存放的位置 libs:存放.jar和.so文件 src:AndroidTest与test存放测试相关的内容 main中Java文件夹存放Java源码,res文件存放资源文件 build.gradle为项目的gradle配置文件 res文件 1.AndroidManifest.xml文件:存放整个项目的配置文件,程序中定义 阅读详情

binder

Android应用程序是由Activity、 Service、 Broadcast Receiver和 Content Provider四种类型的组件构成的, 它们有可能运行在同一个进程中, 也有可能运行在不同的进程中。 此外, 各种系统组件也运行在独立的进程中, 例如, Activity管理服务ActivityManagerService和Package管理服务PackageManagerService都运行在系统进程System中。

image-20200725142202987

Android系统是基于Linux内核开发的。 Linux内核提供了丰富的进程间通信机制, 如管道(Pipe) 、 信号(Signal) 、 消息队列(Message) 、 共享内存(Share Memory) 和 插口(Socket) 等。

image-20200725142429073

而 Android系统开发了一套新的进程间通信机制——Binder。

Binder进程间通信机制在进程间传输数据时, 只需要执行一次复制操作, 所以,提高了效率,节省了内存空间。Binder进程间通信机制是在OpenBinder的基础上实现的, 它采用CS通信方式, 其中, 提供服务的进程称为Server进程, 而访问服务的进程称为Client进程。

同一个Server进程可以同时运行多个组件来向Client进程提供服务, 这些组件称为Service组件。同一个Client进程也可以同时向多个Service组件请求服务, 每一个请求都对应有一个Client组件( Service代理对象) 。

Binder进程间通信机制的每一个Server进程和Client进程都维护一个Binder线程池来处理进程间的通信请求, 因此, Server进程和Client进程可以并发地提供和访问服务。 Server进程和Client进程的通信要依靠运行在内核空间的Binder驱动程序来进行。

Binder驱动程序向用户空间暴露了一个设备文件/dev/binder, 使得应用程序进程可以间接地通过它来建立通信通道。

Service组件在启动时, 会将自己注册到一个Service Manager组件中, 以便Client组件可以通过Service Manager组件找到它。

因此, 我们将Service Manager组件称为Binder进程间通信机制的上下文管理者, 同时由于它也需要与普通的Server进程和Client进程通信, 我们也将它看作是一个Service组件, 只不过它是一个特殊的Service组件。

Binder进程间通信机制 :

Binder进程间通信机制

Client、 Service 和 Service Manager 运行在用户空间, 而Binder驱动程序运行在内核空间, 其中, Service Manager 和 Binder驱动程序由系统负责提供, 而 Client 和 Service 组件由应用程序来实现。 Client、 Service和Service Manager均是通过系统调用 open、 mmap 和 ioctl 来访问设备文件 /dev/binder, 从而实现与 Binder 驱动程序的交互, 而交互的目的就是为了能够间接地执行进程间通信。

分析 Binder 进程间通信机制的四个使用情景, 分别是:

(1) Service Manager的启动过程。

(2) Service Manager代理对象的获取过程。

(3) Service组件的启动过程。

(4) Service代理对象的获取过程。

上述四个使用情景都是基于Binder进程间通信机制的C/C++实现来分析

Binder驱动程序

Binder进程间通信库

安卓学习(2)——Android应用程序的构成 一、目录结构 1、src目录   src目录存放的是该项目的源代码,其内部结构会根据用户声明的包自动组织。 2、gen目录   该目录下的文件是ADT自动生成的,并不需要人为的去修改,实际上该目录下只定义了一个R.java文件,该文件相当于项目的字典,项目中用户界面、字符串、图片、声音等资源都会在该类中创建其唯一的ID,当项目中使用这些资源时,会通过该类得到资源的引用。 3、... 阅读详情

相关推荐

LiteOS | 基于LiteOS的智慧农业案例实验分享

分享一个基于小熊派+LiteOS+华为云的案例实验(智慧农业)。 实验框图 相关模块简介 1、STM32L431RCT6 2、LiteOS LiteOS是华为开发的轻量级实时操作系统: LiteOS源码GitHub仓库链接: https://github.com/LiteOS/LiteOS 其源码一级目录结构如下: 其内核包括任务管理、内存管理、时间管理、通信机制、中断管理、队列管...

嵌入式大杂烩 5992

Android应用程序分类

在安卓中创建的大部应用程序大致属于下面的一种: 前台应用程序:只能在前台运行的应用,不见时就会挂起,比如游戏,这几天正在玩的“贪吃蛇大作战”就是这样一种前台应用,它在玩的时候不能够按返回键返回,但是按完home键后它可以挂起,再回来的时候它可以接着运行。 后台应用:这些程序自动在后台运行,几乎没有用户输入。比如:闹钟、电话过虑程序。 间歇性应用:兼具前后台的操作,比如音乐播放器:...

Eric的博客 1918

COMSOL中的动网格

首先我们先了解几个概念 (1)网格重划分(remesh):就是在某些特定的区域进行网格的重新划分,在Maxwell软件中的直线运动区域,当运动物体运动后,这个区域进行重新划分。 (2)morph:网格不重新划分,小范围的进行网格变形,针对运动物体运动位移较小,对变形区域不进行重划分,能够提高效率。 (3)网格滑移(sliding):针对圆形运动区域,运动与非运动区域进行网格滑移,当然边界上两侧网格不共节点,该方法不需要网格重新划分,大部分软件针对圆形运动区域采用该方法,比如maxwell的band,b

midiio的博客 7873

Android基础

Intent是一种用来在不同组件间进行交互的消息对象。可以用于启动Activity、启动Service、发送广播等。Fragment是Activity的一个可重用的部分,具有自己的生命周期和用户界面。可以在Activity中动态添加、移除或替换。是用于监听应用或系统广播信息的组件。可以在后台接收和响应这些广播。Service是一种在后台运行的组件,执行长时间运行的操作,而不提供用户界面。可以是前台Service或后台Service。

EthanZhu的专栏 1237

汇川伺服驱动器参数优化实战指南

本文详细介绍了汇川伺服驱动器参数优化的实战技巧,涵盖控制模式选择、电子齿轮比调整、刚性匹配与振动抑制等关键内容。通过实际案例和实用技巧,帮助工程师快速掌握伺服驱动器参数调校方法,提升设备运行精度和稳定性。特别针对高精度定位和高速响应场景提供了专业指导。

weixin_29070721的博客 738

ESXI 8.0虚拟机安装OpenWRT软路由详细教程

OpenWrt 是嵌入式的 Linux 路由器固件,OpenWrt在稳定运行的同时提供了强大的扩展能力,用户可以完全的定制属于自己的路由系统,满足不一样的个性化需求,本文讲解如何使用ESXI安装OpenWRT,打造属于自己的软路由。本次安装使用的是版本。默认登录信息:用户:root密码:password下载固件:https://github.com/haiibo/OpenWrt/releases/tag/X86_64【CPU配置】:4核心。

qq_27121281的博客 3917

一文搞懂Apk的各种类型

本文主要介绍Android中Apk的各种类型,通过本文您将了解到Apk分为哪些类型,系统Apk、普通Apk、特权Apk、core Apk、product Apk等这些Apk之间的区别和作用

niurenwo的专栏 2848

【UV打印机】RYPC打印软件教程(二)-软件界面概述

下图是控制软件的主操作界面.将喷绘机的操作规纳为四块,分别为参数设置,任务选择,打印控制,系统维护,对于日常打印而言,只需操作任务选择,打印控制。从而使汲及的操作相对较少,使得系统对普通用户而言简单易用.

Print World的专栏 3604

安卓学习基础篇——Android应用程序的构成(一)

Android应用程序的解析 目录结构 1.src目录 2.gen目录 3.Android4.2 4.Android Dependencies 5.assets目录 6.res目录 7.AndroidManifest.xml文件 8.default.properties文件

Kent的专栏 1330

基于Simscape的双PID比例调速阀与比例溢流阀液压控制系统建模与仿真

本文提出了一种基于Simscape的双PID液压控制系统建模方法,通过比例调速阀和比例溢流阀实现液压缸速度与压力的解耦控制。系统采用Simscape Fluids物理建模,精确模拟液压元件非线性特性。文章详细介绍了液压被控对象建模过程,包括动力单元、比例阀组合建模、执行机构及传感器配置。同时设计了双PID控制器架构,分别控制速度环和压力环,并给出参数整定建议。该方法通过物理网络直接模拟流体流动和压力动态,相比传统传递函数法具有更高精度,为液压系统仿真提供了有效解决方案。

AI的内部世界的博客 285

基于STM32设计的万能红外遥控器(学习型)

当前介绍了一种基于STM32微控制器设计的红外遥控器,支持接收解码功能和发送功能,可以将接收的码原样发送出去。 红外遥控器作为智能设备控制方式之一,在一定程度上满足了人们对于快速方便控制的需求。 当前设计的红外遥控器支持学习模式和发送模式。通过矩阵键盘上的数字键选择发送对应的控制码。 一共支持学习10个控制码,对应矩阵键盘上的数字。0~9。

6559

安卓学习基础篇——Android应用程序的构成(二)

Android基本组件的介绍   应用程序的生命周期 应用程序进程从创建到结束的全过程便是应用程序的声明周期。与其他系统不同的是,Android应用程序的生命周期是不受进程自身控制的,而是由Android系统来决定的,一般来说,Android系统会根据应用程序对用户的重要性及当前系统的负载来决定声明周期的长短。 Android系统将所有的进程大致分为以下5类进行管理。   1.前

Kent的专栏 1850

2025年软件测试职业院校技能大赛—ERP管理平台-采购管理采购入库模块测试用例

竞赛对接软件测试相关标准,以“ERP管理平台” 为被测系统,围绕软件测试领域的主流技术及工具,考查选手面 对实际问题的综合分析能力,对测试文档、测试用例的设计能力, 对单元测试、自动化测试、性能测试、接口测试等测试工具及方 法的掌握程度,检验选手团队协作能力、组织规划能力、方法运用能力等。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 404

安卓程序基础android,安卓学习基础篇——Android应用程序的构成(一)

Android应用程序的解析目录结构1.src目录:src目录下存放的是该项目的源代码,其内部结构会根据用户所生命的包自动组织。2.gen目录:系统自动生成,该目录下定义了一个R.java的文件,该文件相当于项目的字典,项目中用户界面、字符串、图片声音等资源都会在该类中创建唯一的ID。3.Android4.2:存放该项目支持的JAR包。4.Android Dependencies:第三方库。5.a...

weixin_31091067的博客 329

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android 应用程序构成

Android 应用程序构成 一般情况Android应用程序是由以下四种组件构造而成的: · 活动 · 广播接收器 · 服务 · 内容提供器 需要注意的是,并不是每个Andorid应用程序都必须构建这4个组件,有些可能由这些组件的组合而成。 一旦你确定了你的应用程序中需要的组件,那么你就应该在AndroidManifest.xml中列出他们。 这是一个XML配置文件,它用于定义应用程序中需要的组件、组件的功能及必要条件等。这个文件是必须的。 详情参见Android manifest file

myspor的专栏 600

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android应用程序的构成

Android应用程序的目录结构   src目录:存放的是项目的源代码;   gen目录:ADT自动生成的,不需要人为地修改;   assets目录:存放项目相关的资源文件;在程序中可以使用"getResources.getAssets().open("test.txt")"得到资源文件的输入流InputStream对象;   res目录:存放应用程序中经常使用的资源文件,包括图...

daniel_tu的专栏 345

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

构成Android应用程序的4个模块

Android应用程序由4个模块构成:Activity、Intent、ContentProvider、Service。 activity activity是最基本的模块,我们称之为“活动”。一个activity通常就是一个单独的屏幕,每个活动都被实现为一个独立的类,并且从活动基类里继承而来,活动类将会显示由视图控件组成的用户接口,并对事件做出响应。 简单的说,activity代表一个用户能看

狼籍 1225

安卓Android入门

Android基于Linux内核,这使得它具有强大的硬件兼容性和稳定性。

m0_74154295的博客 2283

4、什么构成了我们Android应用程序?(七大件)

一、应用程序四大组件 【Activity】 Activity是Android应用程序的一个界面,可以通过这个界面查看联系人,打电话戒玩游戏。 b. 一个应用程序通常包含多个Activity。 c. Activity通过布局管理添加各种View组件。 d. 通过setContentView(int) 方法可以将视图呈现出来。 【Service】 a. Service运行在后台...

dianwei5413的博客 86

安卓期末复习(一) ——Android简介与环境开发

文章目录安卓期末复习(一) ——Android简介与环境开发Android简介Android系统框架Android的软件结构层次Linux内核层相关驱动,C核心类库(Libaries)和运行时环境(Runtime),C\C++应用程序框架(Application Framework),Java应用程序(Application),JavaAndroid开发环境Gradlejava目录res目录Android程序Android应用程序的构成 安卓期末复习(一) ——Android简介与环境开发 Android简

qq_52410477的博客 1320

android应用程序有以下4个组件构成:

a.活动(activity)(必备) b.yi

ouyang201191的专栏 890

Win11安装失败全排查:TPM、UEFI与GPT分区表指南

固件模式与分区表是操作系统安装前的核心基础。UEFI取代传统BIOS后,引导方式与磁盘分区结构紧密关联,GPT分区表成为现代系统安装的必备条件。与此同时,TPM 2.0与安全启动作为硬件级安全验证机制,直接影响Windows 11能否顺利安装。了解这些底层概念,不仅有助于理解安装报错的原因,还能帮助用户快速定位环境问题。在日常装机或系统迁移场景中,正确配置UEFI、GPT、TPM等设置,配合可靠的启动盘制作工具(如Rufus),能大幅提升安装成功率。本文围绕这些关键技术点,提供一套完整的Windows 11

weixin_34212762的博客 303

基于安卓的文件管理器程序开发研究源码数据库文档

基于安卓的的文件管理器的实现,主要采用Android技术,及JAVA语言,Android studio开发环境,在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。

weixin_41300033的博客 1390
上一篇: 彻底理解-进程的 概念、 组成、特征
下一篇: Android安卓应用
onnx
博客等级 码龄5年 1万+粉丝 416原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

onnx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值