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方法实现如下:

go 复制代码
@Override
    public 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 Crash
                android.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方法实现如下:

go 复制代码
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 开发干货集锦

至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

点击阅读原文,为大佬点赞!

相关推荐
aaajj1 小时前
【Android】手机屏幕劫持防护
android·智能手机
玫幽倩1 小时前
2025FIC取证决赛wp(手机取证)
python·智能手机·手机·电子取证·计算机取证·手机取证·fic
x-cmd4 小时前
[260531] OpenClaw 五月月报:模型接入大爆发、安全重构、手机端终于能当主控台用了 [特殊字符]
安全·ai·智能手机·重构·x-cmd·openclaw
千里马学框架13 小时前
aosp新增窗口层级 Type 完整实现方案(有源码)-wms需求和面试题
android·智能手机·架构·wms·aaos·车机
呉師傅1 天前
联想ideapad 310-15ABR拔掉充电器使用电池工作花屏问题的解决方法【维修个例】
运维·服务器·网络·智能手机·电脑
古月开发1 天前
旧手机变身 AI 作业监督器:低成本家庭学习解决方案
人工智能·学习·智能手机
wanhengidc1 天前
云手机 跨设备无缝衔接
运维·服务器·人工智能·智能手机·云计算
vensli1 天前
AutoGLM vs 豆包手机:拆解两条 GUI Agent 的技术路线
人工智能·智能手机·transformer
weixin_448841271 天前
当AI遇上群控:用自然语言指挥手机集群的新时代
人工智能·智能手机
lauo2 天前
从FunloomAI到ibbot:当你的手机不再是“手机”,而是你的AI副脑和生产节点
人工智能·智能手机·架构·开源·github