onCreate只有第一次startService才调用。那么有个疑问,每次startService都是一个AIDL过程吗?还是只是第一次startService是AIDL,后面都是直接调用service对象的onStartCommand方法?

解决方案 »

  1.   

    那IntentService效率不是很低吗?因为涉及到跨进层通信
      

  2.   

    不是跨进程,Service与Activity是同线程的,BroadCast才是跨进程
      

  3.   

    每次aidl都明一定开销的,所以GOOGLE建议要减少AIDL调用,
    要看到IntentService的主要优点,干完活就退出了,不再占用内存。
      

  4.   

    不是跨进程,Service与Activity是同线程的,BroadCast才是跨进程虽然Service和Activity都在一个进程里,但是每次startService不是都有AIDL通信吗?
      

  5.   

    不是跨进程,Service与Activity是同线程的,BroadCast才是跨进程虽然Service和Activity都在一个进程里,但是每次startService不是都有AIDL通信吗?ADIL通过Binder 来完成传递数据和返回数据,你一个进程的东西, 就是 应用进程A 通过Binder与 ServiceManager(系统进程)交互,返回 数据给 应用进程A , 这不算是跨进程, ServiceManager比较特殊,
      

  6.   

    不是跨进程,Service与Activity是同线程的,BroadCast才是跨进程虽然Service和Activity都在一个进程里,但是每次startService不是都有AIDL通信吗?ADIL通过Binder 来完成传递数据和返回数据,你一个进程的东西, 就是 应用进程A 通过Binder与 ServiceManager(系统进程)交互,返回 数据给 应用进程A , 这不算是跨进程, ServiceManager比较特殊,应用进程A与系统进程交互怎么会不算是跨进程??????
      

  7.   

    不是跨进程,Service与Activity是同线程的,BroadCast才是跨进程虽然Service和Activity都在一个进程里,但是每次startService不是都有AIDL通信吗?ADIL通过Binder 来完成传递数据和返回数据,你一个进程的东西, 就是 应用进程A 通过Binder与 ServiceManager(系统进程)交互,返回 数据给 应用进程A , 这不算是跨进程, ServiceManager比较特殊,应用进程A与系统进程交互怎么会不算是跨进程??????
    你偏离了你原来问的东西了
      

  8.   

    我们每一次启动activity都会使用Binder,那你这么说启动activity都算跨进程了吗,说了系统进程特殊,你咋这么倔
      

  9.   

    启动activity,会通过Binder获取ActivityManagerService的代理对象,来完成activity的启动,这个ActivityManagerService就属于系统进程的成员对象