AIDL通信 android 在5.0以使用隐式Intent方式来启动Service的问题
16lz
2021-01-26
转自: http://www.cnblogs.com/xiaoxiaing/p/6278996.html
在使用AIDL进行通信的时候需要开启远程服务,在这里发现android5.0以后不能使用隐式intent :需要指定Intent的ComponentName组件名称信息:
intent.setComponent(xxx),
或指定
Intent的setPackage("包名"),
如果两者都没有指定的话将会报错。
尤其在framework层启动APP层的service时,如果是隐式启动service,可能会导致系统进程挂掉,出现不断重启的现象。
解决方法1:
Intent intent = new Intent();ComponentName componentName = new ComponentName(pkgName,serviceName);intent.setComponent(componentName);context.startService(intent);
解决方法2:
Intent mIntent = new Intent();mIntent.setAction("XXX.XXX.XXX");//Service能够匹配的ActionmIntent.setPackage(pkgName);//应用的包名context.startService(mIntent);
AIDL通信Demo
更多相关文章
- Android(安卓)应用的欢迎界面实现代码
- Android系统的启动流程(转载)
- API Demos 2.2 研读笔记(9)——通过调用子Activity返回值
- 【Android话题-2.5系统服务】ServiceManager启动和工作原理是怎
- Android(安卓)Studio在启动时gradle的问题:Download https://serv
- AIDL 消息通信
- Facebook 客户端优化实践后,App 启动提速65%
- Android(安卓)数据存储之SQLite
- Android(安卓)ApiDemos示例解析(20):App->Alarm->Alarm Service