应用冷启bindservice耗时

文章讨论了SDK初始化时耗时过长的问题,主要集中在主线程的bindservice操作上。由于主线程在应用启动初期繁忙,导致服务连接回调在主线程执行,引发延迟。解决方法是通过传递Executor参数,将回调移到子线程,从而提高初始化速度。

背景: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参数,回调在子线程

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值