android 中Service中的绑定失败策略以及Service自己Destory策略

Android 11 解决跨应用绑定Service失败 解决安卓系统升级到11、12后,调用bindService一直返回flase 阅读详情

 (一)Service绑定失败策略

          在Android中,当我们跨进程启动或者绑定一个Service,当时不能保证第一次就能成功,比如,远程的Service还没起启动成功,需要过一段时间才行,当没有绑定成功后,我们通过aidl来调用RemoteServcie就会出现Null错误,即ServiceConnection中的onServiceConnected()还未被回调,没有给本地远程服务代理赋值。

          为了解决绑定或者启动没有成功的问题,我们可以使用循环绑定策略,即发现并未绑定成功,我们再次绑定,但是又不能无限循环,因为,假如远程就是没有了,无限循环绑定就会出现错误。所以必须还有定个循环绑定次数。

          当我们使用远程Service的本地代理时候,先判断它是否为null,若为null,则执行循环绑定操作,并且制定一个循环绑定次数限制,比如是3,每次循环后次数限制就做减一操作,当减为0时候,表示远程服务出现错误,则不再执行循环绑定操作。

          在执行循环绑定操作时候,我们可以使用延迟绑定操作,就是延迟几毫秒再绑定,这样,就确保Remote Service启动时间是足够的。可以通过编写一个Handler,使用handler.sendMessageDelayde(Messagee msg, long delayMillis)操作来延迟。


(二)Service自己销毁

          当我们实现自己的aidl的Service时候,我们需要自己销毁Servcie,因为外界可能只是startService(),并不会调用stopServcie()操作,另一方面,当我们Service做完工作后,将自己销毁,也节省cpu,因此自己销毁Servcie就显得非常重要。

          Service中,自己销毁操作就是本身调用stopSelf()函数,但是何时调用该函数才是重点,我们可以通过任务队列实现。

          当Service中,我们为所有Tasks创建一个队列,当client端调用Service时候,每推进一个Task,就将该Task插入到该队列中,当执行完一个Task后,就从队列中删除,然后判断该队列是否为空,若为空则执行stopService()操作。


以上就是对Service启动绑定和自己销毁一些策略应用,大家可以在android源码中找到相应的使用情景。

低成本主从机械臂系统构建:6D位姿数据采集与VLA模型训练实战 本文详细介绍了如何构建低成本主从机械臂系统,实现高精度6D位姿数据采集与VLA模型训练。通过300美元级别的硬件组合,系统达到±1mm位置精度和≤0.5°姿态误差,满足Vision-Language-Action模型的多模态训练需求。文章涵盖硬件选型、数据采集技巧、模型训练实战经验,为机器人研究提供经济高效的解决方案。 阅读详情

相关推荐

OpenCV机械臂手眼标定

这篇文章总结了手眼标定的原理,利用OpenCV自带的函数套用参数即可完成眼在手上和眼在手外两种标定。

Q先森的博客 6588

android绑定Service失败原因

.清单文件中没有加service字段,即便service是jar包中的,也需要在清单文件中注册 2.远程服务没有启动 在Android中,当我们跨进程启动或者绑定一个Service,当时不能保证第一次就能成功,比如,远程的Service还没起启动成功,需要过一段时间才行,当没有绑定成...

测试0901-1 1002

用户存续期价值评估(CLV) 一

用户存续期价值评估(CLV) 1 一. 定义 ​     用户存续期价值(Customer Lifetime Value),也可称为CLTV、LCV或者LTV,是企业对未来一个客户与其的关系所带来的净收益的预测。这个预测模型可以有不同水平的复杂度和精确度,从一个直观感觉到使用复杂的预测技术。CLV可以被简单理解为客户关系的价值,也就是未来由于与客户的关系所带...

weixin_43171270的博客 8025

Android 四大组件之——Service启动、绑定、解绑、停止的最基本写法

Android Service最基本写法

qq_41008818的博客 1005

从零开始用TS开发babylonjs - 本机环境搭建

babylonjs,初始化本地安装,web3d引擎

han3527638的专栏 794

C语言的文件读取与写入操作

学了一年的C语言了,现在回过头来做一下总结。并且博客开了挺长一段时间却没有谢什么实际的东西。现在做下总结,对之后的学习帮助应该挺大的。与大家共勉! 现在,我先来介绍一下C语言的文件读取与写入的原理和具体操作方法。 C语言文件读取与写入是通过将文件看成一个字符序列进行读入和写出的。所以读取与写入文件就用到了指针,而这个指针是一个特殊的指针,我们称为文件指针。 指针名称是

wzyxdwll的博客 3万+

Android Service 遇到的错误

1. 在添加复杂数据的 aidl 文件的时候。 parcelable XXX ,如果写成 Parcelable 悲剧N就 2. 添加 Service aidl 文件接口的时候,如果复杂数据涉及 输入/输出, 需要添加 in/out 关键字 3. 在Java中如果需要实现多个接口 implements XXX, XXX  这里用逗号分隔开就OK 4. service 绑定失败。好吧

babyyang1213的专栏 753

基于BEV(鸟瞰图)的3D检测:PointPillars与CenterPoint

基于BEV(鸟瞰图)的3D检测:PointPillars与CenterPoint​ ,人工智能,计算机视觉,大模型,AI,本文围绕基于BEV的3D检测,解析了PointPillars与CenterPoint两种算法。PointPillars用点柱特征编码网络处理点云,通过2D卷积网络提取特征,检测头为解耦头;CenterPoint将三维物体表为点,分两阶段检测,先找中心点及属性,再细化预测。两者都可借特定骨干网生成BEV特征图且基于BEV检测,但检测头设计和物体表示方式不同。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 27万+

Android 绑定服务的5个问题。

清单文件里package="com.centerm.cpay">这句话必须加上。gradle文件里的域名名字要改变下。

wcg_jishuo的专栏 1594

博途PLC PID仿真LSim_PT1库算法(一阶系统差分方程推导全过程)

博途PLC的PID仿真可以参看下面这篇博客,这篇文章我们主要论坛仿真库LSim的算法由来。如何利用博途PLC PID_Compact 进行PID仿真(一阶系统)_RXXW_Dor的博客-优快云博客博途PLC PID控制器 PID_Compact FB如何使用可以参看下面这篇文章,这里不再赘述。

RXXW_Dor的博客 2858

基于STC8G1K08A单片机的7位PWM输出程序(PCA功能实现呼吸灯效果)

摘要:本文展示了基于STC8G单片机的PWM占空比控制实现。通过定时器0中断每5ms调整占空比(0-127范围),实现呼吸灯效果。关键代码包括:1)PWM初始化(7位PWM模式);2)定时器配置(1ms中断);3)主循环根据标志位动态调整占空比。硬件采用P5.4引脚输出PWM信号,通过direction标志实现占空比自动增减循环。该方案适用于LED亮度调节等场景,系统时钟24MHz,采用12T模式。

weixin_74013772的博客 864

android 11 AIDL 跨应用绑定service失败原因

允许被其他应用唤醒”打开这样就能被aidl的客户端唤起了,到这里aidl 客户端就能正常访问服务端了。在android 11以下版本手机上绑定的好好的,怎么在android 11以上设备就不行了呢?到这里是不是完了呢,别急这个只解决了客服端访问问题,服务端还有问题。看到这里小伙伴们是不是反应过来恍然大悟了,就是这个鬼东西导致呀。此时仍需把服务端app设置为自启动,部分平板中的位置是。为了客户端能访问到服务端app我们要添加下面配置。android 11新增的特性中有个“服务端我们的包名是“

qq_37506816的博客 2515

Python爬虫实战:手把手教你如何抓取农作物品种名录,构建标准化种业索引数据库!

我长期专注 Python 爬虫工程化实战,主理专栏 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 290

关于Android Service真正的完全详解,你需要知道的一切

Service 1.Service基础知识概述   Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。服务可由其他应用组件启动(如Activity),服务一旦被启动将在后台一直运行,即使启动服务的组件(Activity)已销毁了。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件

zejian的博客 23万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

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

Android开发--Service开启,关闭,绑定,解除

Android应用程序中有一项非常重要的技术--Service,它没有运行界面,运行在后台,但是有一点非常重要,Service并不是一个单独的进程,同时也不是一个线程,用来处理耗时的动作。 Service有两种使用方法,一种是start和stop,另一种是绑定服务。 当使用的是第一种方法时,直到用户停止这个服务,Service才会停止,即使是用户关闭这个Activity(应用程序)...

移动开发记录 392

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android Service的绑定和非绑定服务

Service介绍: Service是系统四大组件之一,它的后台运行并不是子线程,Service的运行是在主线程中进行的,只是它没有界面显示而已,它的耗时操作同样需要开启子线程,否者会跟Activity一样出现ANR。它不能在页面显示,只能在后台运行,可以与其他组件进行交互。Service的用途很广,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上...

看美丽风晴 4095

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Android Service绑定的时候没有回调onBound函数

如题,onBound只在客户端第一次调用b

lcy547140的专栏 1092

Service 层无效绑定问题的解决

Service层无效绑定问题

znn123456n的博客 896

上半年遇到的一些service绑定失败的分析

对于近期4.4和5.x上出现服务无法绑定的问题分析如下: 【具体原因分析】 一、    用户侧数据 我们从用户侧拿到的servicedump信息: 从用户侧拿到的sevices文件,都有这几特征: 解释这几个值。 1.serviceRecord:就是用于服务对象本身 1.App=null:说明服务于进程没有关联起来 2.lastStartid=124;说明主进程调用st

tanno1的专栏 5111

【Service】bindService调用流程

bindService流程

明朗晨光的专栏 2995

Service销毁流程

文中的源代码版本为api23 Service销毁流程 stopService流程 流程简图如下 关闭Service我们通常使用Context.stopService,该方法会经历以下方法调用 Context.stopService-> ContextImpl.stopService-> ContextImpl.stopServiceCommon-> ActivityMana...

weixin_34067980的博客 1453

SystemVerilog线程控制实践:fork-join、事件、旗语与信箱

在芯片验证与数字电路仿真中,并发线程的管理是构建高效testbench的基础。SystemVerilog提供了fork-join家族控制线程汇合与分离,event实现轻量级同步,semaphore(旗语)保护共享资源互斥访问,mailbox(信箱)则用于线程间异步数据传递。理解从原理到工程实践,有助于解决仿真卡死、数据竞争、线程泄漏等常见问题。本文从并发编程的通用概念出发,结合UVM验证环境中的实际场景,剖析线程创建、同步、通信与生命周期管理的核心要点,并给出可落地的调试与设计建议,帮助验证工程师构建稳定、

weixin_34174105的博客 347
上一篇: Android提供的异步类和接口
下一篇: android中跨进程之间的异步回调
wikiday
博客等级 码龄15年 5粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值