2016-01-08 59 views
2

我想知道是否Dalvik实例是分叉每个应用程序或每个进程,也就是说,如果我有一个具有多个进程的应用程序我也有多个Dalvik实例?实际上多处理过程是如何发生的?Dalvik/JVM如何处理多处理的应用程序

让我描述一个简单的场景:

我开始这将启动运行在第一个流程中的活动的应用程序,然后我点击一个按钮,它产卵开始在不同的进程中运行的另一个活动。

因此,当我点击一个按钮是另一个Dalvik被分叉的实例,并且被新实例化的Dalvik解释的字节代码?如果它是真的,过程切换如何发生。假设我回到第一个活动,运行时如何确定现在第一个Dalvik应该解释字节码?

+6

“如果我有多个进程的应用程序也有多个Dalvik实例?” - 是的。 “我想要一个非常详细的答案......” - 你想要的远远超出Stack Overflow答案的范围。在[Android内幕]上购买一本书(http://shop.oreilly.com/product/0636920021094.do)。 – CommonsWare

+1

随着编辑你的问题属于“推荐某些东西”关闭类别,这不会帮助你重新打开问题。请尽量详细说明您的问题。 – Cristik

+1

(经过更多编辑...)Linux内核负责执行调度和其他进程管理。 Dalvik VM的单个实例不跨越进程。 – fadden

回答

0

活动不是过程。一个进程/应用程序可以有许多Activity实例,每个实例都基本上只是Java对象。因此,单击一个启动新活动的按钮,与创建新实例相比,更类似于启动新过程。

当它发生时,进程切换在操作系统级别处理,就像任何其他基于Unix的操作系统一样。进程正在同时运行,并且在操作系统认为合适的时候在处理器上给予更多或更少的时间。

这可能会有帮助,通过Managing the Activity LifecycleBest Practices for Background Jobs培训,这将给你更多的背景。

相关问题