frameworks/base/services/java/com/android/server/SystemServer.java
因为wifiservice在system_server里启动,在这儿监测的时间,总共用了2s,暂时高通基线只用了100多ms, 与高通基线代码无任何修改,所以wifiservice代码本身的代码没问题
最后经各种加日志分析,发现是一个获取wifiContext对象的时候,用了2s
尝试解决办法一:
使用了android 系统的perf来监测system_server的各个线程使用情况,想知道哪个具体的加载函数出的问题,但是貌似没怎么生效
尝试解决办法二:
1、尝试将WifiContext获取的时候使用另一个线程获取,但是后面会遇到各种crash
2、尝试在Wifiservice构造的时候延迟,会发生后续WifiScanService的crash
尝试解决办法三:
1、尝试在system_server一开始的时候获取WifiContext资源,然后在Wifiservice的启动的时候将mContext对象传进WifiService里,结果发现WifiService通过jar包加载,无法传入参数
2、尝试在system_server一开始的时候创建WifiContext资源,将这个资源对象写入一个单例里,然后使用资源对象的时候,阻塞的获取,但是因为创建对象的地方放在了PackageManage
service启动之前,所以出现了各种crash,尤其是在get的时候crash,
3、最后成功的是,基于解决办法三里的2, 创建的时候放在PackageManageService启动之后
首先创建一个WifiHelper.java, 用一个线程获取资源,另一个线程可以获取到拿到的资源
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiHelp.java
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache Lic

针对Android系统中WiFiService启动慢的问题进行分析与优化。通过调整WiFiContext获取方式,利用并发技术减少启动时间。
最低0.47元/天 解锁文章
9823

被折叠的 条评论
为什么被折叠?



