Small
Small copied to clipboard
service问题
- [x] 我已阅读并理解 贡献指南,严格遵循其约定。
错误报告
你做了什么?
使用service时在onStartCommand
中返回START_STICKY,在启动应用后startService
,然后结束进程。
再次打开应用闪退。
你期望的结果是什么?
项目在杀死进程后能够正确启动,并正确运行。
实际结果是什么?
由于service是START_STICKY,当service被开启后会被标识,当应用进程结束后再次进入后会马上启动该service,然而此时还没有能执行到hook classloader所以会找不到service类。
Small环境
Compile-time
gradle-small plugin : 1.1.0-beta3 (project)
small aar : 1.1.0-beta9 (project)
gradle core : 2.14.1
android plugin : 2.2.3
OS : Windows 10 10.0 (amd64)
Device : vivo x3t
SDK : Android 4.2.2
ABI : armeabi-v7a
目前临时解决方法:
1.本地service可以设置process
属性的把它放到子进程里,或者修改onStartCommand
的return值为START_NOT_STICKY
。
2.第三方SDK的service就麻烦了,只能看能不能设置process
属性放在子进程。
@xufan 我在 app.ok-if-stub
的 MyLocalService 里测试,没法复现。
是用什么版本的手机试的?我这边只有4.2.2才会出现,高版本也是没问题
模拟器跑的,==我试下4.2的
更新状态 已经通过在ActivityThreadHandlerCallback
中处理message CREATE_SERVICE
参照proivder
延时安装 对Service也进行延时创建和启动
Nexus 6P 7.0的系统,出现了同样的问题,个人猜测是由于杀掉进程后sticky service立即重启时,bundle还没有加载完成,导致ClassNotFoundException。 请问有什么解决方案?
facing the same issue~ google pixel xl os 7.1.2 @alonelyshepherd