当前位置: 首页 > news >正文

连云港人才专业化网站网站建设教程简笔画

连云港人才专业化网站,网站建设教程简笔画,福州seo服务,建设银行北海分行网站上一篇讲了Zygote是如何收到启动Application的启动消息,并一步步进入Fork()#xff0c;下面来分析zygote fork启动application后#xff0c;application进程后续处理操作#xff0c;是如何真正的启动的。 ZygoteInit.main():--...caller ZygoteServer.runSelectLoop()…上一篇讲了Zygote是如何收到启动Application的启动消息,并一步步进入Fork()下面来分析zygote fork启动application后application进程后续处理操作是如何真正的启动的。 ZygoteInit.main():--...caller ZygoteServer.runSelectLoop();--while(true) //死循环--Zygoteconnection connection peers.get(); Runnable command connection.processOneCommand();//进行进程的处理创建新进程--args Zygote.readArgumentList(mSocketReader);//获取socket命令参数ZygoteArguments parsedArgs new ZygoteArguments();...各种参数解析中...pid zygote.forkAndSpecialize();//Fork子进程得到一个新的pid.--pid nativeForkAndSpecialize(); //调用native层接口去forkif(pid 0){ //子进程}return pid;if(pid 0) //子进程Application进程{//关闭Zygote服务Socket因为fork时复制出来的socket对Application进程来说它没有用。zygoteServer.closeServerSocket(); //application进程可以正常运行了。return handleProcessChild();--ZygoteConnection.java:ZygoteInit.zygoteInit(parseArgs.xxx); //app进程的启动--ZygoteInit.java:RuntimeInit.commonInit(); //初始化运行环境ZygoteInit.nativeZygoteInit();//启动Binder, 并在androidRuntime.cpp中注册--com_android_internal_os_ZygoetInit_ativeZygoteInit():--gCurRuntime-onZygoteInit(); //通过JNI进入Native--//进入app_main.cpp.onZygoteInit();//下面ProcessState对应Application这个进程实例里面会初始化Binder--spProcessState proc ProcessState::self();--在C构造函数初始化列表中mDriverFD(open_driver(driver))//这里总结下Application被Zygote Fork出来之后进入到Native层处理的目的是为了构建Binder.//因为后续的跨进程通信都需要借助Binder.后续将此Binder发给AMSAMS拿到App的IBinder才能//够通过AMS的服务来与APP通信。proc-startThreadPool(); //启动Binder线程池//里面通过反射创建程序入口函数的Method对象并返回Runnable对象return RuntimeInit.applicationInit();//类名字类参数加载器--return findStaticMain(args.startClass, args.startArgs,classLoader);//通过反射拿到对应类的main方法的Method对象找到的就是ActivityThread.java.main();--m cl.getMethod(main,new class[]{string[].class});return 近回一个Runnable 对象。}else{ //zygote 进程}...//Runnable对象返回到这里对应上面代码中的Runnable command connection.processOneCommand();后面//继续接着返回最后返回到上面代码的caller ZygoteServer.runSelectLoop();if(caller ! null)caller.run(); //执行返回的Runnable对象进入子进程。--RuntimeInit.java.MethodAndArgsCaller-run();--mMethod.invoke();//java反射原理。执行的是ActivityThread.java的main() 分析时需要注意的是底层调用linux fork()接口之后会有两个返回值如果pid 0,表示返回的是子进程如果pid 0,返回的是父进程即zygote的程序运行路线父进程zygote进程可以得知子进程的pid号。 补充一个要点ApplicationThread是什么它其实是一个IApplicationThread.Stub对象通过IBinder对象进行跨进程通信访问时ApplicationThread本质就是Binder线程池中的一个线程关联到上面代码中的proc-startThreadPool() )
http://www.huolong8.cn/news/34339/

相关文章:

  • 帝国cms网站模板有效的小企业网站建设
  • 厦门企业网站开发网络营销公司全网天下
  • 沈阳做网站多少钱发外链的网站排名
  • 开发微网站和小程序网站开发设计各部门职责
  • 0基础学做网站教程给一个网站如何做推广
  • 北京建设工程交易协会网站济南信息化网站
  • 黄石企业网站设计深圳网站建设找哪家公司
  • 通州微网站优化wordpress如何获取会员字段
  • 哪家公司的网站做得好网站规划与建设
  • 昆明cms建站模板粉末涂料做网站有用吗
  • 030159网站建设与维护h网站模版
  • 企业管理网站在哪些网站做外贸好
  • it网站设计培训建筑工程网格化管理实施方案
  • wap网站开发 php襄阳手机网站建设
  • 在与客户谈网页广告时如何让客户相信网站流量医疗器械注册
  • 做咖啡网站.htaccess wordpress cdn
  • 河南网站推广电话临淄百度信息网
  • 视频网站开发用什么服务器最近热点新闻事件
  • 建设网站一般要多久猎头公司怎么找客户
  • 天津做网站软件全屋定制设计指南
  • 中国常德合肥建站优化
  • 在百度怎样建网站公众号模板
  • 国家建设管理信息网站互联网营销成功案例
  • 网站建设的实验的结论体育设施建设网站
  • 网站续费话术外贸网站开发哪家好
  • 福田区住房和建设局地址官方网站专业建站商
  • 数据库端口 wordpress优化网站价格
  • 网页制作怎么上传到网站快站建站教程
  • 制图网站中国建设银行网站-个人客
  • 长沙建设公司网站济南比较好的网站开发公司