2012-01-23 23 views
2

我想在同一個DalvikVM中運行兩個進程。這意味着我想運行第一個應用程序,然後這個應用程序啓動第二個應用程序。我希望這兩個應用程序在同一個DalvikVM中運行。我認爲如果第一個應用程序爲第二個應用程序分配一個進程是可能的。但我不確定我該怎麼做。 謝謝Android:如何創建新進程

+1

我很好奇號,什麼是想這樣做的原因。 –

回答

3

我想在同一個DalvikVM中運行兩個進程。

根據定義,這是不可能的。

這意味着我想運行第一個應用程序,然後該應用程序啓動第二個應用程序。我希望這兩個應用程序在同一個DalvikVM中運行。

根據定義,這是不可能的。

我認爲如果第一個應用程序爲第二個應用程序分叉一個進程是可能的。

+1

對不起,但是您的定義是什麼意思? – Aprel

+1

@Aprel:虛擬機只能在一個進程中。多個進程意味着多個虛擬機。 – CommonsWare

+0

但是有很多Android模擬器,你可以在模擬器中運行遊戲或程序。這意味着Linux內核 - > Dalvik vm - > Android - > Emulator - > VM - >遊戲。我不會僅僅在原始dalvikVm – Aprel

2

我非常懷疑你真正想要做的是去挖掘過程的具體細節(如果你這樣做,我會質疑爲什麼)。在任何情況下,Android都會故意讓您靠近流程變得非常困難,因爲平臺提供了足夠的機制來實現幾乎所有功能流程而無需執行。

我懷疑你究竟是什麼意思,你需要啓動一個新的Android 任務(有它自己的回棧,功能上像一個單獨的應用程序運行)。

閱讀開發指南中的Tasks and Back Stack文檔,特別是有關任務的部分。您可能要查看的內容是使用Intent中的FLAG_ACTIVITY_NEW_TASK標誌開始新活動。

+0

謝謝,但我真的想這樣做,我不明白爲什麼它應該是可能的說合理分叉一個新的過程,但具有相同的dalvikvm – Aprel

+1

@Aprel - 你實際上可以讓zygote給你一個不同的過程活動或服務,如果你指定它應該在你的AndroidManifest中有一個,或者你可以讓底層Linux克隆你現有的進程(至少爲了有限的非Android目的)。但是另一個進程將包含一個帶有自己狀態的* distinct * VM *,而不是「同一個」。但是他們仍然可以通過諸如AIDL風格的服務連接之類的進程間通信進行交談。 –