当前位置: 代码迷 >> Android >> 关于Andorid新过程中的binder实体
  详细解决方案

关于Andorid新过程中的binder实体

热度:74   发布时间:2016-04-28 06:36:11.0
关于Andorid新进程中的binder实体
App进程中存在一个Binder实体,ApplicationThread,
ActivityManagerService通过ApplicationThread的代理,和Application进行交互,例如让Application Pause到后台
但是为什么我找不到Application在那边启动binder线程,以监听ActivityManagerService的指令呢?

有哪位知道的,指点下~
------解决方案--------------------
这段代码不在你的Application里面,在android的源代码里,Activity.java里面。大概的流程是,系统先启动一个线程,线程利用反射机制加载你的apk里面的activity类,生成一个对象实例,然后获得各种service,然后将service跟你的activity实例attach。。。
------解决方案--------------------
近日研究Binder,正好也看了下application对应的进程启动及其建立Binder通信的地方。

今天碰巧看到哥们这个帖子,就跟你分享下吧。

请参考: http://blog.csdn.net/luoshengyang/article/details/6747696

主要流程: 

1. startViaZygote -> zygoteSendArgsAndGetPid -> openZygoteSocketIfNeeded && sZygoteWriter.write

2. runSelectLoopMode -> peers.get(index).runOnce();  -> Zygote.forkAndSpecialize -> zygoteInit
 ->  zygoteInitNative -> onZygoteInit ->   sp<ProcessState> proc = ProcessState::self();  && proc->startThreadPool();    



  相关解决方案