Service not registered 异常导致手机重启分析

和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、Service not registered 异常导致手机重启
二、Service not registered 解决方案
一、Service not registered 异常导致手机重启
1.重启 的部分Log如下:

Service not registered 重启异常
二、Service not registered 解决方案
从 Log 中分析发现异常信息,并尝试进行如下修改。
1.修改ContextImpl类
文件路径如下:\frameworks\base\core\java\android\app\ContextImpl.java文件
优化unbindService方法实现如下:
@Overridepublic void unbindService(ServiceConnection conn) {if (conn == null) {throw new IllegalArgumentException("connection is null");}if (mPackageInfo != null) {IServiceConnection sd = mPackageInfo.forgetServiceDispatcher(getOuterContext(), conn);try {ActivityManager.getService().unbindService(sd);} catch (RemoteException e) {throw e.rethrowFromSystemServer();// add for Service not registered unbindService() triger reboot exception} catch (IllegalArgumentException e) {//com.google.android.gms.ui Service not registered Crashandroid.util.Log.e("wjwj","---ContextImpl GMS Crash---");e.printStackTrace();}// add for Service not registered unbindService() triger reboot exception} else {throw new RuntimeException("Not supported in system context");}} 2.修改 TransportManager 类
文件路径如下:frameworks\base\services\backup\java\com\android\server\backup\TransportManager.java 将异常捕获,防止重启。
优化unbindService方法实现如下:
void onPackageRemoved(String packageName) {// Package removed. Remove all its transports from our list. These transports have already// been removed from mBoundTransports because onServiceDisconnected would already been// called on TransportConnection objects.synchronized (mTransportLock) {Iterator<Map.Entry<ComponentName, TransportConnection>> iter =mValidTransports.entrySet().iterator();while (iter.hasNext()) {Map.Entry<ComponentName, TransportConnection> validTransport = iter.next();ComponentName componentName = validTransport.getKey();if (componentName.getPackageName().equals(packageName)) {TransportConnection transportConnection = validTransport.getValue();iter.remove();if (transportConnection != null) {/* 360OS begin *//* unbindService() triger reboot exception,* catch it && add log to find out witch package do it. */try {Slog.d(TAG, "onPackageRemoved trace, componentName:"+ componentName.toString(), new Throwable());mContext.unbindService(transportConnection);} catch (IllegalArgumentException e) {Slog.e(TAG, "unbindService fail.", e);}/* 360OS end */log_verbose("Package removed, removing transport: "+ componentName.flattenToShortString());}}}}} 参考文献:
【腾讯文档】Android Framework 知识库
https://docs.qq.com/doc/DSXBmSG9VbEROUXF5
友情推荐:
Android 开发干货集锦
至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

点击阅读原文,为大佬点赞!
相关文章:
Service not registered 异常导致手机重启分析
和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、Service not registered 异常导致手机重启二、Service not registered 解决方案 一、Service not registered 异常导致手机重启 1.重启 的部分Log如…...
深度解读|一站式ABI平台 Smartbi Insight V11 能力再升级
纵观过去,我们发现汽车和BI的发展有异曲同工之妙。 100来年,汽车的动力从蒸汽到燃油再到新能源,汽车的操控方式从手动到自动再到智能无人驾驶。而在BI领域,自1958年BI的概念提出后,底层数据准备从报表开发、Cube多维模…...
vConsole手机调试模式uniapp和原生h5
手机打开调试模式的方法 尽量放在页面头部,底部有可能不行 原生 <script src"https://cdn.bootcss.com/vConsole/3.3.0/vconsole.min.js"></script> <script>// init vConsolevar vConsole new VConsole();console.log(Hello world)…...
Flutter Dart语言(05)异步
0 说明 该系列教程主要是为有一定语言基础 C/C的程序员,快速学习一门新语言所采用的方法,属于在C/C基础上扩展新语言的模式。 1 async和await 在Dart语言中,虽然没有像其他语言(如Java、C、Python)中的传统多线程概…...
滇医通微信小程序分析笔记
注意 本文章仅供学习交流使用,如果你是铁粉你就会知道博主之前发布过一篇相关的文章,但是由于代码涉及到法律相关所以就隐藏了,两年的时间过去了,因为女朋友已经早早安排上了,所以就搁置了,本次不做代码分…...
IoTDB在springboot2中的(二) 查询
上一章我们处理的基本的构建接入,以及插入的处理,那么接下来我们进行查询的操作处理。 我们继续在IoTDBSessionConfig工具类中加入查询的方法处理 /*** description: 根据SQL查询最新一条数据* author:zgy* param sql sql查询语句,count查询…...
SpringBoot 底层机制分析【Tomcat 启动+Spring 容器初始化+Tomcat 如何关联Spring 容器】【下】
😀前言 本篇博文是关于SpringBoot 底层机制分析实现,希望能够帮助你更好的了解SpringBoot 😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大…...
NLP(六十五)LangChain中的重连(retry)机制
关于LangChain入门,读者可参考文章NLP(五十六)LangChain入门 。 本文将会介绍LangChain中的重连机制,并尝试给出定制化重连方案。 本文以LangChain中的对话功能(ChatOpenAI)为例。 LangChain中的重…...
C字符串与C++ string 类:用法万字详解(上)
目录 引言 一、C语言字符串 1.1 创建 C 字符串 1.2 字符串长度 1.3 字符串拼接 1.4 比较字符串 1.5 复制字符串 二、C字符串string类 2.1 解释 2.2 string构造函数 2.2.1 string() 默认构造函数 2.2.2 string(const char* s) 从 C 风格字符串构造 2.2.3 string(co…...
async/await函数需要trycatch吗?
前言 写异步函数的时候,promise 和 async 两种方案都非常常见,甚至同一个项目里,不同的开发人员都使用不同的习惯, 不过关于两者的比较不是本文关注的重点,只总结为一句话:“async 是异步编程的终极解决方案”。 当使…...
Jenkins集成appium自动化测试(Windows篇)
一,引入问题 自动化测试脚本绝大部分用于回归测试,这就需要制定执行策略,如每天、代码更新后、项目上线前定时执行,才能达到最好的效果,这时就需要进行Jenkins集成。 不像web UI自动化测试可以使用无痕浏览器做到无界…...
MongoDB:切换log日志文件
可以不重启MongoDB,切换日志文件 use admin db.runCommand({logRotate:1})参考 MongoDB 日志切割三种方式...
代码随想录第三十五天
代码随想录第三十五天 Leetcode 860. 柠檬水找零Leetcode 406. 根据身高重建队列Leetcode 452. 用最少数量的箭引爆气球 Leetcode 860. 柠檬水找零 题目链接: 柠檬水找零 自己的思路:我的垃圾思路!!!!!!复…...
块、行内块水平垂直居中
1.定位实现水平垂直居中 <div class"outer"><div class"test inner1">定位实现水平垂直居中</div></div><style>.outer {width: 300px;height: 300px;border: 1px solid gray;margin: 100px auto 0;position: relative;}.te…...
Mybatis引出的一系列问题-动态 SQL
动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底…...
Docker学习之构建Base Image
构建Base Image 目标是构建一个类似官方Hello world的镜像,需要配置好Docker运行环境。 创建目录,编写代码 创建并进入docker目录。 mkdir docker cd dockertouch hello.cvim hello.chello.c文件的内容如下: #include <stdio.h>in…...
SFM(Structure from Motion)和NeRF(Neural Radiance Fields)
SFM(Structure from Motion)和NeRF(Neural Radiance Fields)都是计算机视觉领域中的重要算法,用于不同的任务和应用。 SFM(Structure from Motion): SFM是一种从图像序列中重建三维场…...
[Vue] Vue2和Vue3的生命周期函数
vue2有11个生命周期钩子, vue3有8个生命周期钩子 从vue创建、运行、到销毁总是伴随着各种事件, 创建、挂载、更新到销毁。 1.vue2系列生命周期 ⑴【beforecreate】实例创建前。 vue完全创建之前,会自动执行这个函数。 ⑵【Created】实例创建后。 这也是个生命…...
springboot集成分布式任务调度系统xxl-job(调度器和执行器)
一、部署xxl-job服务端 下载xxl-job源码 下载地址: https://gitee.com/xuxueli0323/xxl-job 二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库 三、启动项目、访问首页 访问地址: http://localhost:8080/xxl-job-admin/ 账号࿱…...
11_Vue3中的新的组件
1. Fragment 在Vue2中:组件必须要有一个跟标签在Vue3中:组件可以没有根标签,内部会将多个标签包含在一个Fragment虚拟元素中好处:减少标签层级,减少内存占用 2. Teleport 什么是Teleport?——Teleport 是一种能够将…...
Leader让我带5个外包,出了问题算我的,绩效好了算团队的,每天当保姆还不如自己写,管理岗这个坑谁爱跳谁跳
看到一哥们吐槽,说leader让他带5个外包,出了问题算他的,绩效好了算团队的,每天当保姆还不如自己写代码。看完我直接笑出声了——不是觉得好笑,是太真实了,笑的是自己也经历过。说实话,这种事在互…...
Qwen2.5-VL-7B-Instruct新手必看:无需网络,纯本地部署的多模态AI工具
Qwen2.5-VL-7B-Instruct新手必看:无需网络,纯本地部署的多模态AI工具 你是不是经常遇到这样的场景:看到一张复杂的图表,想快速提取里面的数据;收到一张产品照片,需要生成详细的描述文案;或者想…...
QOwnNotes版本控制完全指南:掌握Git集成的笔记历史管理
QOwnNotes版本控制完全指南:掌握Git集成的笔记历史管理 【免费下载链接】QOwnNotes QOwnNotes is a plain-text file notepad and todo-list manager with Markdown support and Nextcloud / ownCloud integration. 项目地址: https://gitcode.com/gh_mirrors/qo/…...
如何在Windows部署Claude Code?保姆级教程
🧠 什么是 Claude Code? Claude Code 是 Anthropic 推出的一个命令行编程助手(CLI AI Agent)。 你可以理解为: “代码 Agent 大模型 本地执行能力” 简单来说就是 Claude(大脑) Terminal…...
【独家首发】CPython官方GIL移除路线图深度解读(附内部邮件泄露+性能基准测试数据),错过再等十年
第一章:Python无锁GIL环境下的并发模型演进全景Python长期以来受全局解释器锁(GIL)制约,导致多线程无法真正并行执行CPU密集型任务。近年来,随着CPython 3.12正式引入实验性无GIL构建选项(通过--without-py…...
忍者像素绘卷镜像免配置:内置Prompt语法校验器防无效输入机制
忍者像素绘卷镜像免配置:内置Prompt语法校验器防无效输入机制 1. 产品概述 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工作站,专为像素艺术创作而设计。它融合了16-Bit复古游戏美学与现代AI图像生成技术,为用户提供了一个直观…...
会议纪要秒变问答库!WeKnora即时知识系统实战教程
会议纪要秒变问答库!WeKnora即时知识系统实战教程 1. 为什么你需要一个"不跑题"的会议助手? 想象这些常见的工作场景: 项目复盘会上,有人问"三个月前那次迭代的排期是怎样的?",所有…...
Graphormer开源镜像部署指南:3.7GB轻量模型GPU快速启动(RTX4090实测)
Graphormer开源镜像部署指南:3.7GB轻量模型GPU快速启动(RTX4090实测) 1. 项目概述 Graphormer是一种基于纯Transformer架构的图神经网络,专门为分子图(原子-键结构)的全局结构建模与属性预测而设计。该模…...
探索NextDNS Config:优化你的DNS配置以提升网络性能
探索NextDNS Config:优化你的DNS配置以提升网络性能 是一个开源项目,旨在帮助用户轻松地管理并优化其设备上的NextDNS设置。该项目由Yokoffing开发,并提供了多种平台(包括路由器、Android和iOS)的配置文件,…...
SEO 和网站推广有什么区别_如何判断一个网站的 SEO 质量
SEO 和网站推广有什么区别 在数字营销的广阔天地中,SEO(搜索引擎优化)和网站推广是两个常被提及的概念。它们虽然都旨在提升网站的流量和知名度,但实际上,它们之间有着显著的区别。理解这两者的异同,对于有…...
