应用冷启bindservice耗时

背景:sdk初始化的时候耗时过长,而sdk,init方法中只有一个bindservice及一些变量的初始化,却好事100ms

 应用冷启bindservice耗时_第1张图片

 查看trace发现binderservice耗时只占init耗时的一小部分,但是init逻辑并没有其他代码。

 这里servicebind返回快的另一原因是service已经被其他进程绑定过了,无需耗时在service.onbinded()回调中创建stub对象

1. 查看binderservice代码发现bindservice如果不传入excutor参数会在主线程回调connection.onserviceconnected()

应用冷启bindservice耗时_第2张图片

2.怀疑在应用启动的时候,主线程繁忙导致分配不到时间片,接着查看trace验证

ap主线程调度到了cpu 7超大核进程冷启动 ,但是在init阶段cpu 7一直处于繁忙状态导致没有分配时间片给init,导致sdk初始化慢。

解决办法:

bindservice传递excutor参数,回调在子线程

你可能感兴趣的:(android)