其实真的搞清楚了安卓四大组件的应用场景了吗

【Android入门】6、ContentProvider:跨程序的数据共享:访问其他 App、被其他 App 访问 ContentProvider 的应用场景: 例如通讯录/媒体库共享给其他APP, 拿到了其他APP的数据, 就可以提供更好的内容, 有更好的用户体验。 阅读详情

其实经历这么多年来的安卓方面的开发,最后的感觉是,它太自由了,要实现一件事,可用的方式太多了。四大组件中除了Activity需要用来UI交互,这个无可厚非,如果说到进程间的通讯,方式可多了。

举个例子:我想在APP之间同步一些状态或数据,你觉得用什么方式合适? 

1、广播;

2、Messenger;

3、AIDL;

4、ContentProvider;

甚至还可以用SharedPreference(虽然这个跨进程共享方式已经被安卓废弃);

1、刚开始接触安卓,就觉得广播最好用了,简单的很,一两句话就把数据发出去了,简单粗暴,但其实在以上4个方式中,广播是对系统开销最大的一个。只能适用于场景:尽量少发,避免频繁,这个消息需要多方知道,而且不需要关心谁先收到,甚至不关心谁没有收到(那是你接收方的事)。

第2第3、Messenger和AIDL效率相差不多,跨进程偶合度最低,都是基于Binder通讯,Messenger是单线程处理消息队列的,只能异步返回,AIDL则是多线程处理事务的,但它是同步返回的(调用者会等到它返回结果),在实现接口里需要注意处理多线程安全方面。如果需要有长时间实时性的数据传输,当然推荐AIDL去自己实现接口了,如果是频繁的一些事件消息,就推荐使用Messenger,比AIDL方便嘛。

4、ContentProvider也是很方便,它也是基于Binder通讯,但它并不像AIDL来的那么直接,而且通过system server的ContentProvider管理服务去绕了一圈,一次query的流程开销比service AIDL调用开销大多了,最近做项目,就发现,有的地方需要频繁query一个内存中的int变量(共享的状态变量),一次query就要花掉几百ms,相当可怕,这情况就最好避免用ContentProvider了,我理解ContentProvider仅适用于不需要频繁获取的数据共享。我说它方便,是因为它本身就有数据变化通知的功能,就不需要自己操心去回调通知了。

以上说的aidl 和messager的方式耦合度低,其实有没有想过,还有个方式耦合度更低的,那就是system service,如果做过安卓系统层的开发,需要开发个一直运行于系统中的deamon,那么以system service的方式是最妥了。因为最理想的是,永远也不担心被系统回收掉。

以上总结,只是粗略讲述,网络上这些组件的技术细节相关的文章也很多,但并没有对这些通讯方式的对比介绍,更没有通讯效率方面的实际对比,其实我也没有做过全面测试对比,仅凭经验结论,大家有更详细的见解的,欢迎留言讨论。

 

 

Android开发实战:通过StartAnotherApp调用第三方应用完整示例 任何功能开发前都要问自己几个问题:关键问题决策建议是否允许未安装时自动跳商店?是,但需提示用户敏感数据要不要传?如手机号、UID最好不要,必须传则考虑加密或使用 content provider某些操作需要权限怎么办?必须提前检查,不能假设用户已授权目标 App 不存在怎么办?提供网页版兜底方案如何应对国产 ROM 兼容性差的问题?多设备测试 + fallback 到通用协议我们可以整理成一张决策表,方便后续参考:场景。 阅读详情

相关推荐

NY8A053E 例程 之 PWM Ouput

更多关于NY8A053E的相关例程请留言!

倪彬笑阳的博客 2924

安卓Scheme与Activity跳转原理:从黑盒探索到合规应用实践

在移动应用开发中,Scheme作为统一资源标识符,定义了应用间的深度链接协议,而Activity则是安卓四大组件中负责用户界面的核心单元。其工作原理基于Intent机制,通过隐式或显式调用实现跨应用通信与页面跳转。这一机制的技术价值在于为应用提供了标准化的外部调用接口,极大提升了应用间的协同效率与用户体验。在实际应用场景中,Scheme与Activity跳转广泛应用于自动化测试、开发调试、系统集成与工作流优化等领域。例如,通过分析快手等主流应用的Scheme声明与Activity导出属性,可以构建合规的测试

weixin_33892359的博客 375

深度学习中的编码器-解码器架构

解码的作用:转换为人类可理解的形式,解码器的任务是将编码器生成的中间表示(上下文向量)转换回人类可理解的输出形式(如翻译后的文本、生成的图像描述等)。解码器通过逐步生成输出序列,使得最终的输出符合人类的理解和需求。编码的作用:转换为机器可理解的形式,编码器将输入数据(如文本、图像等)转换为一种机器更容易处理和理解的形式,即上下文向量或编码。在深度学习中,编码器(Encoder)解码器(Decoder)是常见的神经网络架构,通常用于处理序列到序列(seq2seq)任务,如机器翻译、文本摘要和图像描述等。

xxk1323的博客 1093

android 四大组件,安卓四大组件及其作用

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。安卓四大组件:Activity、Service、BroadcastReceiver和ContentProvider,作用:1、Activity组件的主要作用是展示一个界面并和用户交互,它扮演的是一种前台界面的角色Activity是一种展示型组件,主要是向用户展示一个界面,并且可以接收用户的输入信息从而和用户进行交互。对用户来说,A...

weixin_29325955的博客 1万+

ABAP代码检查(Code Review)

1、SLIN 扩展程序检查 也可通过(SE38工具栏->检查-扩展程序检查) 进入 2、ATC 检查 通过<SE38菜单栏-检查-ABAP测试主控室> 或事物代码SCI, 支持自定义检查变式 SCI可以配置检查变式满足特殊需求,配置对象集用于批量检查 3、通过ABAP测试主控室实现统一管理,定期检查作业和监控功能(事务代码ATC) 参考 SLIN...

u012232542的博客 6063

STM32基于软件模拟IIC进行AHT21B温湿度采集

通过学习软件IIC来进行实操AHT21B采集温湿度。

Liu-FE的博客 3700

安卓开发四大组件——contentProvider基本使用介绍(1)

问题背景 我们在安卓日常开发和学习过程中,contentProvider是个很常见的概念,毕竟是四大组件之一。不过可能工作和学习过程中涉及到contentProvider的场景有时候不是很多。本文先初步介绍下contentProvider的基本使用。 问题分析 话不多说,直接上代码,代码主要可以分为两大部分,一个是内容提供...

baorant24的博客 872

OpenCV+ArUco实战:如何用Python实现高精度二维码测距(附完整代码)

本文详细介绍了如何使用Python和OpenCV实现基于ArUco标签的高精度单目视觉测距。通过相机标定、标签检测和三维位置估算,结合完整代码示例,帮助开发者在机器人导航、工业自动化等场景中实现厘米级距离测量,并探讨了精度优化与三维可视化等进阶应用。

weixin_29052717的博客 476

移动开发作业三:ContentProvider的应用

移动开发作业三

m0_52229959的博客 1268

第六天 界面操作及美化(6.4 使用GUI 套件)

本文介绍如何使用VIPM工具安装DMC GUI套件:首先打开VIPM并连接网络,搜索"UI"找到DMCGUI套件后下载安装;安装完成后即可在VIPM中添加控件并预览效果。该方法同样适用于下载其他UI套件,用户可根据需求设计个性化界面。整个流程包括搜索、下载、安装和使用四个简单步骤,适合快速搭建GUI界面。

weixin_38637405的博客 407

价值微笑曲线与AI公司的位置

1. 背景介绍 1.1 问题由来 自20世纪60年代,哈佛大学商学院教授西奥多·波特提出了“价值链”理论以来,企业如何构建竞争优势成为企业经营管理领域的研究重点。随着全球化的发展和科技进步,企业竞争环境发生了深刻变化,传统价值链管理模式逐渐显现出局限性。近年来,全球竞争格局由成本竞争转向创新竞争,企业的生存

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 1095

Android的应用场景

6. **零售和电子商务**:Android应用在零售和电子商务行业发挥了重要作用。1. **智能手机和平板电脑**:Android是智能手机和平板电脑最主要的操作系统之一。5. **教育和学习**:Android应用为教育和学习领域提供了很多便利。7. **娱乐和游戏**:Android应用提供了丰富多样的娱乐和游戏体验。以上只是Android的一些主要应用场景,随着技术的不断进步和创新,Android将继续在更多领域发挥作用,为用户带来更多便利和智能化的体验。游戏,并通过应用商店向用户提供。

xtxiaolu的博客 3438

地方政府预算数据抓取:利用Python爬虫获取预算安排、资金分配与支出情况

爬虫是通过模拟浏览器行为,从互联网上自动获取数据的程序。在本案例中,我们将通过爬虫从地方政府的官方网站或预算公开平台抓取各类预算信息。这些信息一般以HTML网页的形式呈现,可以通过爬虫对网页内容进行解析,提取所需的预算数据。Python作为数据抓取的强大工具,凭借其简洁的语法、强大的第三方库(如requestsSelenium等)以及丰富的数据处理能力,成为了开发爬虫应用的首选语言。

2201_76125261的博客 941

从0开始认识android(二):四大组件及Intent初识

该系列的文章只是本人的一些个人理解随笔,也深怕误人子弟,如果理解有错的地方还希望看到的朋友指正,不胜感激!!!     本篇主要是对android的四大组件Activity,Service,BroadcastReceiver和ContentPrivider及这四大组件间的启动Intent方式做一个初步认识,详细的在后面.以下内容摘抄自安卓文档  Activity   Activit...

jack_bear_csdn的博客 607

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android 启动模式对应的标志位,重温Android四大组件(二)—Activity的启动模式与标志位...

前言重温 Android 四大组件的第二篇,主要总结Activity的启动模式以及相关的标志位。Activity启动模式是Activity的一个重要的属性,启动模式决定了Activity在Activity栈的存在的行为。不同的启动模式下的Activity有不同的表现,所以开发者需要搞清楚各个启动模式的特性以及相互之间的区别。Activity的启动模式standard(标准模式):这是系统默认的启动...

weixin_35762258的博客 556

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Android开发学习心得体会

文章目录写在前面一、Android开发是什么?1.android开发面向那些应用?2. 现在移动应用开发得项目架构方式?3.怎么去尽快入门?初学者要搞清楚的问题?二、总结项目开发1. 此次项目开发过程中用到的技术总结如下 写在前面 先来总结总结一下最近的情况。从毕业到找到工作然后到入职前前后后用了不到半个月的时间。报道第一天,公司领导对我很热情,又是嘘寒问暖,有是问问自己做过哪些东西。再到第二天以至后来的半个月里,都是让我单独搭建一个公司的测试服务器,在上面安装好所需要的环境和软件工具以及做一些领导安排的

qq_32403043的博客 7180

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

备战金九!这份Java核心突击面试手册绝对不能错过,大厂面试就指望它了!!

中秋小长假结束,各大厂还在换血,我相信将会是面试求职的高峰时期,如果此时手里有份高质量的面试宝典,那么你将得心应手面对考官各种问题。虽然不敢保证你能应聘上心仪的职位,但是能保证看完这些内容你的收获将超乎你的想象!

weixin_66896902的博客 296

2022中高级Android面试题必知百题合集,新鲜出炉,助你金三银四跳槽顺利

前言 新年假期已结束,即将迎来火热的金三银四求职季; 相信很多小伙伴都在蠢蠢欲动了 但是很多人都在苦恼,金三银四面试的人那么多,我该如何准备呢? 我经历了大大小小很多场面试,也见过很多人面试,特此总结了一些小小的心得,希望能够对于正在求职的各位小伙伴一些借鉴的意义。 面试建议 1.心态要放好,不能着急 不要看到被人拿到offer,自己没有就抱有心里压力,其实工作谁都可以找到,就看满意不满意,所以着急也是没有用。 2.身体很重要 不要熬通宵复习、学习,把身体搞垮了得不偿失。保持良好的睡眠。 3.善于总结面试中

xiaokangss的博客 322

有了这份900多页的Android面试指南,你离大厂Offer还远吗?

前言 对于大部分程序员来说,一线互联网是的工作经历是毕生的追求,实际上大厂对于学历的要求远远没有我们想象的那么高,近几年来,互联网公司更注重技术,所以提升自身技术水平才是斩获offer的制胜关键。一线互联网以阿里为代表,流行的是什么技术,我们需要学到什么程度,掌握得多深,是很有必要搞清楚的。 今天整理出来的这份900多页pdf,一共有五大核心内容,如果能够熬夜啃完,那你离收割大厂offer就不远了☺。 Java 基础知识 1、java 中==和 equals 和 hashCode 的区别 2..

weixin_44339238的博客 209

漫聊Android Binder那些事

前言 前两个月去了祖国的三个城市旅游,分别是呼伦贝尔、重庆、三亚,感受下了下祖国的大好山河,舒服惬意。读万卷书,行万里路。有机会和还是要多出去看看外面的世界,长长见识,这些旅行阅历对个人的成长是非常有帮助的。这段时间的旅游,最大的收获就是感受大自然的美景,草原、山川、大海。也刷新了我的旅游空间范围,目前,去过的最东边是大阪(日本)、最西边是重庆、最北边是呼伦贝尔、最南边是三亚,后续有时间我也会写点“游记”分享下。 频繁的旅游,让我在专业学习上荒废了不少,看到之前定制的计划的月度计划没有完成,倍感罪孽深重。那

咖啡老师 524

Android Activity启动模式

Android Activity启动模式 Activity作为Android四大组件之首,它非常重要,有时候为了项目的需要,就必须使用Activity的启动模式,所以我们必须要搞清楚Activity的启动模式和标志位: Android Activity启动模式 1 .Activity的LaunchMode (1). standard:标准模式 (2). singleTop:栈顶复用模式 (...

Eclipse的博客 447

中高级Android程序员面试必备宝典【值得收藏】

前言 疫情一过,我相信将会是面试求职的高峰时期,如果此时手里有份高质量的面试宝典,那么你将得心应手面对考官各种问题。虽然不敢保证你能应聘上心仪的职位,但是能保证看完这些内容你的收获将超乎你的想象! 面试准备 1.准备一份自己的自我介绍,面试的时候根据面试对象适当进行修改(突出重点,突出自己的优势在哪里,切忌流水账); 2.注意随身带上自己的成绩单和简历复印件;(有的公司在面试前都会让你交一份成绩单和简历当做面试中的参考。) 3.如果需要笔试就提前刷一些笔试题,大部分在线笔试的类型是选择题+编程题,有的还会

wdjnb的博客 356

每日一刷:Java核心突击面试手册,大厂出品,必属精品

2023已经来了,金三银四我相信将会是面试求职的高峰时期,如果此时手里有份高质量的面试宝典,那么你将得心应手面对考官各种问题。虽然不敢保证你能应聘上心仪的职位,但是能保证看完这些内容你的收获将超乎你的想象!由于篇幅有限,资料内容过多,只展示目录和部分截图,需要完整版学习的小伙伴可以点击下方的名片即可自取!

m0_73311735的博客 338

2022中高级Android程序员面试必备宝典【值得收藏】

前言 疫情一过,我相信将会是面试求职的高峰时期,如果此时手里有份高质量的面试宝典,那么你将得心应手面对考官各种问题。虽然不敢保证你能应聘上心仪的职位,但是能保证看完这些内容你的收获将超乎你的想象! 面试准备 1.准备一份自己的自我介绍,面试的时候根据面试对象适当进行修改(突出重点,突出自己的优势在哪里,切忌流水账); 2.注意随身带上自己的成绩单和简历复印件;(有的公司在面试前都会让你交一份成绩单和简历当做面试中的参考。) 3.如果需要笔试就提前刷一些笔试题,大部分在线笔试的类型是选择题+编程题,有的还会.

Android_XG的博客 457

Android开发艺术探索知识回顾——第1章 Activity的生命周期和启动模式:2、启动模式和Flags标记位

1.2 Activity的启动模式 上一节介绍了Activity在标准情况下和异常情况下的生命周期,我们对Activity的生命周期应该有了深入的了解。除了Activity的生命周期外,Activity的启动模式也是一个难点, 原因是形形色色的启动模式和标志位实在是太容易被混淆了,但是Activity作为四大组件之首,它的的确确非常重要,有时候为了满足项目的特殊需求,就必须使用Activity的启动模式,所以我们必须要搞清楚它的启动模式和标志位,本节将会一一介绍。 1.2.1 ...

鲁迷那的专栏—坚持实践后再写出来! 699

细谈Activity四种启动模式

嗨大家好,又和大家见面了,上一次我们一起搞清楚了Handler的源码机制(现在回想起来是不是感觉也就那么回事,当时看的头皮发麻-。+!!),今天我们谈一谈我们在Android开发中必不可缺少的一个组件——Activity: Activity作为四大组件之一,也可以说是四大组件中最重要的一个组件,它负责App的视图,还负责用户交互,而且有时候还经常其他组件绑定使用,可以说非常的重要。 ...

cuper_的博客 486
上一篇: android android:persistent service 空闲被回收
EmMouse
博客等级 码龄18年 11粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值