service,receiver,contentprovider,国产手机冷唤起均会拦截。
之前小米手机大范围吊起支付宝失败,是因为小米下发了这种禁止冷唤起service的策略。,而支付宝正好用了service实在是坑爹。
为什么微信能独善其身呢?通过反编译发现,是通过activity唤起的,这也可以理解,要是国产手机在把冷唤起activity给拦截,那就太不要脸了,完全和安卓系统背道而驰。
因此,activity冷唤起是目前唯一安全的方式。微信一直才去这种方式唤起,支付宝在遭遇国产手机坑爹的行为之后,也在调起service之前,先通过唤起activity,然后延时200毫秒左右,保证成功启动支付宝,然后在bindservice,完成支付冷调起。
通过activity调起,参数和回调怎么处理呢?
参数可以通过startactivity时,在intent中传递相关参数即可。
回调可以通过再次start调起放的activity或者监听onactivityresult。
此外回调可以通过在bundle中传递夸进程对象aidl binder实现,这样更加优雅。