当我新建一个Binder派生类的对象的时候,它就创建了吗?请问一下这部分创建的代码我们什么地方可以看到?

解决方案 »

  1.   

    IPCThreadState, ProcessState.你去看这两个文件,在framework/base/libs/binder下面,每个process启动的时候会,都会创建两个 binder thread,里面是循环等待binder transaction.然后执行。
      

  2.   

    Client 端不创建额外的thread。Server 端在注册服务后就创建Tread。如     ProcessState::self()->startThreadPool();
        IPCThreadState::self()->joinThreadPool();
      

  3.   

    每个process,都会有这两个binder thread的。最简单的验证方法,eclipse看一下。
      

  4.   

    通过eclipse看了一下,每个进程启动后,会有3个线程,一个是UI主线程,2个Binder线程,请问一下,这2个Binder线程的具体作用以及是在什么时候创建的,代码在什么地方?
      

  5.   

    zygote,看看这个里面的代码.android 中的应用,service都是从这个进程fork来的。
      

  6.   

    但是对于使用AIDL方式创建的Binder对象,明显不是直接创建一个进程,那么这个隐藏线程是在哪里启动的呢?
      

  7.   

    比较明显的例子就是 Application与Ams通信,需要创建一对儿Binder,Application侧一个,AmS相应的有一个
    同时Application还需要与WmS通信,所以有需要创建一对Binder,Application侧一个,WmS相应的有一个,所以在启动一个不带fregment的helloAndroid程序的时候,会发现启动了三个线程,一个Main线程。两个Binder线程。但是这两个Binder线程究竟是在哪里启动的呢?没有想清楚。很多代码看不懂。
      

  8.   

    建议你去看一下http://blog.csdn.net/luoshengyang/article/details/6618363,这是老罗的一系列文章。