每次startService都是一个AIDL过程吗?

广寒月蛮兔 2019-04-18 03:48:31
onCreate只有第一次startService才调用。那么有个疑问,每次startService都是一个AIDL过程吗?还是只是第一次startService是AIDL,后面都是直接调用service对象的onStartCommand方法?
...全文
275 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
键盘舞者113 2019-04-19
  • 打赏
  • 举报
回复
启动activity,会通过Binder获取ActivityManagerService的代理对象,来完成activity的启动,这个ActivityManagerService就属于系统进程的成员对象
键盘舞者113 2019-04-19
  • 打赏
  • 举报
回复
我们每一次启动activity都会使用Binder,那你这么说启动activity都算跨进程了吗,说了系统进程特殊,你咋这么倔
键盘舞者113 2019-04-19
  • 打赏
  • 举报
回复
引用 7 楼 fring2012 的回复:
引用 6 楼 键盘舞者113 的回复:
[quote=引用 5 楼 fring2012 的回复:] [quote=引用 3 楼 键盘舞者113 的回复:] [quote=引用 2 楼 fring2012 的回复:] [quote=引用 1 楼 键盘舞者113 的回复:] 每次都是。。。。。。。。。。
那IntentService效率不是很低吗?因为涉及到跨进层通信
不是跨进程,Service与Activity是同线程的,BroadCast才是跨进程[/quote]虽然Service和Activity都在一个进程里,但是每次startService不是都有AIDL通信吗?[/quote]ADIL通过Binder 来完成传递数据和返回数据,你一个进程的东西, 就是 应用进程A 通过Binder与 ServiceManager(系统进程)交互,返回 数据给 应用进程A , 这不算是跨进程, ServiceManager比较特殊,[/quote]应用进程A与系统进程交互怎么会不算是跨进程??????[/quote] 你偏离了你原来问的东西了
广寒月蛮兔 2019-04-19
  • 打赏
  • 举报
回复
引用 6 楼 键盘舞者113 的回复:
引用 5 楼 fring2012 的回复:
[quote=引用 3 楼 键盘舞者113 的回复:] [quote=引用 2 楼 fring2012 的回复:] [quote=引用 1 楼 键盘舞者113 的回复:] 每次都是。。。。。。。。。。
那IntentService效率不是很低吗?因为涉及到跨进层通信
不是跨进程,Service与Activity是同线程的,BroadCast才是跨进程[/quote]虽然Service和Activity都在一个进程里,但是每次startService不是都有AIDL通信吗?[/quote]ADIL通过Binder 来完成传递数据和返回数据,你一个进程的东西, 就是 应用进程A 通过Binder与 ServiceManager(系统进程)交互,返回 数据给 应用进程A , 这不算是跨进程, ServiceManager比较特殊,[/quote]应用进程A与系统进程交互怎么会不算是跨进程??????
键盘舞者113 2019-04-19
  • 打赏
  • 举报
回复
引用 5 楼 fring2012 的回复:
引用 3 楼 键盘舞者113 的回复:
[quote=引用 2 楼 fring2012 的回复:] [quote=引用 1 楼 键盘舞者113 的回复:] 每次都是。。。。。。。。。。
那IntentService效率不是很低吗?因为涉及到跨进层通信
不是跨进程,Service与Activity是同线程的,BroadCast才是跨进程[/quote]虽然Service和Activity都在一个进程里,但是每次startService不是都有AIDL通信吗?[/quote]ADIL通过Binder 来完成传递数据和返回数据,你一个进程的东西, 就是 应用进程A 通过Binder与 ServiceManager(系统进程)交互,返回 数据给 应用进程A , 这不算是跨进程, ServiceManager比较特殊,
广寒月蛮兔 2019-04-19
  • 打赏
  • 举报
回复
引用 3 楼 键盘舞者113 的回复:
引用 2 楼 fring2012 的回复:
[quote=引用 1 楼 键盘舞者113 的回复:] 每次都是。。。。。。。。。。
那IntentService效率不是很低吗?因为涉及到跨进层通信
不是跨进程,Service与Activity是同线程的,BroadCast才是跨进程[/quote]虽然Service和Activity都在一个进程里,但是每次startService不是都有AIDL通信吗?
jzp12 2019-04-18
  • 打赏
  • 举报
回复
引用 2 楼 fring2012 的回复:
引用 1 楼 键盘舞者113 的回复:
每次都是。。。。。。。。。。
那IntentService效率不是很低吗?因为涉及到跨进层通信

每次aidl都明一定开销的,所以GOOGLE建议要减少AIDL调用,
要看到IntentService的主要优点,干完活就退出了,不再占用内存。
键盘舞者113 2019-04-18
  • 打赏
  • 举报
回复
引用 2 楼 fring2012 的回复:
引用 1 楼 键盘舞者113 的回复:
每次都是。。。。。。。。。。
那IntentService效率不是很低吗?因为涉及到跨进层通信
不是跨进程,Service与Activity是同线程的,BroadCast才是跨进程
广寒月蛮兔 2019-04-18
  • 打赏
  • 举报
回复
引用 1 楼 键盘舞者113 的回复:
每次都是。。。。。。。。。。
那IntentService效率不是很低吗?因为涉及到跨进层通信
键盘舞者113 2019-04-18
  • 打赏
  • 举报
回复
每次都是。。。。。。。。。。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧