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

重庆建网站的公司集中在哪里免费域名

重庆建网站的公司集中在哪里,免费域名,wordpress主题政府,安徽网络营销企业服务上一篇讲了Zygote是如何收到启动Application的启动消息,并一步步进入Fork(),下面来分析zygote fork启动application后,application进程后续处理操作,是如何真正的启动的。 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-->sp<ProcessState> proc = ProcessState::self();-->在C++构造函数初始化列表中:mDriverFD(open_driver(driver))//这里总结下,Application被Zygote Fork出来之后,进入到Native层处理的目的是为了构建Binder.//因为后续的跨进程通信,都需要借助Binder.后续将此Binder发给AMS,AMS拿到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.ahscrl.com/news/12490.html

相关文章:

  • 网上商城的意义独立站seo是什么
  • 旅游做哪个网站好百度论坛首页
  • 海珠建网站公司数据分析报告
  • 早那么做商城网站短视频平台推广方案
  • 网站做以后怎么修改网站内容seo排名优化seo
  • wordpress不显示某个栏目百度搜索排行seo
  • 用java做网站代码百度推广非企代理
  • 深圳外贸商城网站建设网站搭建一般要多少钱
  • 满城区城乡建设局网站学开网店哪个培训机构好正规
  • 如何做公众号小说网站赚钱百度一下百度网页版
  • 彩票走势图网站建设如何制作一个简单的网页
  • 网站建设延期报告自建站怎么推广
  • 上海免费网站建设模板推荐百度竞价托管哪家好
  • 传统网站与营销型网站seo搜索引擎入门教程
  • 餐饮品牌网站建设做市场推广应该掌握什么技巧
  • 郑州市公安局建设路分局网站培训机构退费纠纷一般怎么解决
  • 国外主机 经营性网站百度平台营销软件
  • 山东淄博网站建设百度一下网页打开
  • 附近广告喷绘制作公司杭州专业seo
  • 网站开发中的qq登录拉新任务接单放单平台
  • 行业门户网站有哪些seo学习论坛
  • 做外单网站亚马逊商品关键词举例
  • wordpress主题配置文件南京百度推广优化排名
  • 黄冈论坛网站有哪些云搜索神器
  • wordpress会员发布文章seo黑帽有哪些技术
  • 湖南土特产销售网网站建设制作换友情链接的网站
  • 关于建设网站的需求分析引擎优化是什么意思
  • 网站建设常用结构类型百度搜索引擎的网址是
  • 做的美食视频网站seo优化报告
  • 中国建筑装饰网王凤波北京seo推广服务