背景:sdk初始化的时候耗时过长,而sdk,init方法中只有一个bindservice及一些变量的初始化,却好事100ms
查看trace发现binderservice耗时只占init耗时的一小部分,但是init逻辑并没有其他代码。
这里servicebind返回快的另一原因是service已经被其他进程绑定过了,无需耗时在service。onbinded回调中创建stub对象
1. 查看binderservice代码发现bindservice如果不传入excutor参数会在主线程回调connection.onserviceconnected()
2.怀疑在应用启动的时候,主线程繁忙导致分配不到时间片,接着查看trace验证
ap主线程调度到了cpu 7超大核进程冷启动 ,但是在init阶段cpu 7一直处于繁忙状态导致没有分配时间片给init,导致sdk初始化慢。
解决办法:
bindservice传递excutor参数,回调在子线程