当前位置: 首页 > 网络应用技术

其次,AMS准备与合子的插座通信的准备

时间:2023-03-07 14:36:12 网络应用技术

  AMS完成后,该过程将开始。在Android中,这也是第一个过程。

  主要过程分为三个阶段:

  有一个静态的内部类继承了ActivityTaskManagerinagernal。因此,LocalService是真正的实现。

  还有一个静态的内部类来继承ActivityManagerinters。因此,LocalService是真正的现实主义者。

  在上一篇文章中对AMS的启动分析中,我们知道发射器流程将在三个阶段启动。

  ActivityTaskManagerinal -Minnerther;8

  经过2.1分析后,我们知道,矩阵的特定实现类实际上是ATM中的静态内部类Localservice:

  ActivityTaskManagerinal -Minnerther;8

  rootActivityContainer.java:

  ActivityTaskManagerinal -Minnerther;8

  它遍历所有屏幕ActivityDisplay,通常只有主屏幕。

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  ActivityStartController:

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  通过mhandler发送消息(使用displayThread线程的循环器,也就是说要切换到线程):resum_top_activity_msg.look in handlemessage():

  ActivityTaskManagerinal -Minnerther;8

  返回rootactivityContainer.java:

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  Activitystack.java

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  ActivityStackSupervisor.java

  ActivityTaskManagerinal -Minnerther;8

  }

  ActivityTaskManagerinal -Minnerther;8

  

  ProcessList是管理过程类别:

  ActivityTaskManagerinal -Minnerther;8

  startProcesslocked():

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  flag_process_start_async = true,进行异步启动。异步和同步将转到startProcess():

  ActivityTaskManagerinal -Minnerther;8

  childzygoteprocess继承zygoteprocess,zygoteprocess继承appzygote类,getProcess()方法,对象返回。

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  zygote_process是一个zygoteprocess对象。

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  返回一个childzygoteprocess对象。

  ActivityTaskManagerinal -Minnerther;8

  primonal_socket_name =“”。连接Zygote套接字服务。

  mzygote.getPrimarySocketDress()返回。

  ActivityTaskManagerinal -Minnerther;8

  与Zygote的内部连接。

  在Childzygoteprocess中,在其父级zygoteprocess中没有办法:

  ActivityTaskManagerinal -Minnerther;8

  StartViazygote():

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  用zygote真正完成数据读取数据。将启动过程的命令归为中间。

  经过一系列的课程参与,启动器开始的第一阶段终于完成了。

  那么Zygote如何接收数据?

  在Zygote流程的启动中,我们知道该过程启动后,我们将创建服务器,并将始终收听socket的请求。查看特定过程,在此处进行简要摘要:

  在Zygote启动本机侧面工作后,将调用JNI调用类的Main()方法。它们将调用该方法以打开周期监视套接字请求。

  数据到来后,将调用zygote.forkandspecialize()方法创建一个,输入子过程环境,调用zygoteinit.zygoteinit()方法:

  ActivityTaskManagerinal -Minnerther;8

  在这一点上,处理了合子过程。现在已经启动了该过程。

  由于启动器过程已经启动,因此有必要知道其启动后的作用。

  main()方法您会看到:

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  这很简单,创建一个MResourcesManager对象。

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  这是使用步骤 - 通信使用。

  ActivityTaskManagerinal -Minnerther;8

  让我回到启动器流程以查看其绑定方式吗?

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  从这里开始,我们知道:

  已经创建了应用程序,现在您需要处理可用的活动!让我们回到AMS!

  最后,将其称为rootActivityContainer的actactapplication()方法,然后调用MstackSupervisor。

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  client traransaction的时间表()内部::

  ActivityTaskManagerinal -Minnerther;8

  实现是ActivityThread中的静态内部类:。

  将系统过程的对象传输到该过程,通知终端执行此Scheduletransaction(此)方法:

  由于可以在过程中传递,因此必须是一个对象。

  ActivityTaskManagerinal -Minnerther;8

  调用了ActivityThread的Scheduletraction()方法。ActivityThread本身没有此方法,但是它继承的parent class client transactionHandler具有:

  客户端TransactionHandler.java

  clienttransactionhhandler的类别是什么?交叉口用于发送消息以准备以前的事务。

  ActivityThread.java

  //执行多步交易的执行人。私有最终TransActionExecutor mtransactionExecutor = new TransActionExeCutor(this);这)

  

  ActivityTaskManagerinal -Minnerther;8

  public void execute(client TransAction Tractaction){if(debug_resolver)slog.d(tag,tid(transAction) +“启动解决方案交易”);

  ActivityTaskManagerinal -Minnerther;8

  }

  ActivityTaskManagerinal -Minnerther;8

  

  ActivityTaskManagerinal -Minnerther;8

  }

  ActivityTaskManagerinal -Minnerther;8

  

  ActivityTaskManagerinal -Minnerther;8

  然后,然后

  ActivityTaskManagerinal -Minnerther;8

  }

  ActivityTaskManagerinal -Minnerther;8

  

  ActivityTaskManagerinal -Minnerther;8

  }

  ActivityTaskManagerinal -Minnerther;8

  窗口,活动configcallback活动configcallback,ibinder sistingToken){//设置mbase。= 0){mwindow.setuioptions(info.uioptions);} muithread = thread = thread.currentthread();

  ActivityTaskManagerinal -Minnerther;8

  }

  ActivityTaskManagerinal -Minnerther;8

  最终的iApplicationToken.stub appToken;//窗口管理器令牌

  ActivityTaskManagerinal -Minnerther;8

  接口iApplicationToken 22 {23字符串getName();24} 25

  ActivityTaskManagerinal -Minnerther;8

  

  ActivityTaskManagerinal -Minnerther;8

  }

  ActivityTaskManagerinal -Minnerther;8

  @intdef(prefix = {“ undefined”,“ pre”,“ on”},value = {undefined,pre_on_create,on_create,on_resume,on_paume,on_pause,on_destroy,on_destroy,on_restroy}))

  ActivityTaskManagerinal -Minnerther;8

  ,排除法斯特省);perform LifeCyclesequence(R,PATH,TRASACTION);}

  ActivityTaskManagerinal -Minnerther;8

  在预防状态”);};}

  ActivityTaskManagerinal -Minnerther;8

  }

  ActivityTaskManagerinal -Minnerther;8

  (debug_resolver){slog.d(标签,tid(交易) +“过渡活动:”

  在Cycltopath()之后,您还将调用requmeActivityItem.execute()。你在内部做什么?

  4.7.2.4 requmeActivityItem.execute()remeactivityItem.java

  );}

  ActivityTaskManagerinal -Minnerther;8

  = true;

  ActivityTaskManagerinal -Minnerther;8

  ActivityTaskManagerinal -Minnerther;8

  .Activity.mfined);} if(r == null || r.Activity.mfined){return null;} if(r.getLifeCyClestate()== on_resume){//执行截距(!finalStatequest){finalStatequest)状态。对于一个//以外的情况,我们不会不快乐。}返回null;} if(finalRequest){r.hidefornow = false;

  ActivityTaskManagerinal -Minnerther;8

  }

  原始:https://juejin.cn/post/709627622325248008