我正在尝试在2个不同的进程上运行2个活动。这样做的目的是我的应用程序显示我的产品,添加我的子产品的主屏幕图标。每当我使用主要产品时,我希望它显示在主进程上,而我的子产品将显示在另一个进程的不同活动中。这样,当退出子产品时,恢复我的主要产品可能会很快,因为它已经在后台运行。
通读这个: http://developer.android.com/guide/topics/manifest/activity-element.html#proc
他们声明您可以使用android:process属性将活动分成不同的进程。这就是我所做的:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:process="com.mypackage.myapp">
<activity android:name=".ProductActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>
<activity android:name=".SubProductActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:process=":com.mypackage.myapp.newprocname">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>
<activity android:name="com.phonegap.DroidGap" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"> <intent-filter> </intent-filter> </activity>
</application>
但是,记录当前的PID,两个活动实际上都在同一个进程上运行......
可能是什么问题?
答案 0 :(得分:3)
将子活动的意图设置为android.intent.category.LAUNCHER(正如您所做的那样)后,为第二个活动设置单独的TaskAffinity字符串。 例如。在清单中的第二个活动行中,确保您有类似于
的内容<activity android:name=".SubProductActivity" android:label="SubActivity"
android:taskAffinity="com.domain.project.SubActivityName">
这告诉Android在单独的进程中运行SubProductActivity。
答案 1 :(得分:2)
我正在尝试在2个不同的进程上运行2个活动。
为什么?
这样做的目的是我的应用程序正在显示我的产品,其中添加了我的子产品的主屏幕图标。
这似乎与让他们处于不同的流程中无关。
这样,当退出子产品时,恢复我的主要产品可能会很快,因为它已经在后台运行。
它会更快,更不用说显着更高的内存效率,因为它们只需要一个进程。无论如何,你的其他活动都将在记忆中 - 将它们放在一个单独的过程中不会改变它。
可能是什么问题?
您的日志记录可能存在缺陷。有可能更简单的流程名称(例如:remote
)将起作用。
但是,最简单的答案是删除android:process
属性。
答案 2 :(得分:1)
我不知道我是否以正确的方式理解你的问题,但......
如果你从MainProductActivity启动子产品活动android在内存中维护MainProductActivity,如果你退出SubProductActivity(例如通过后退按钮),它应该像android可以在活动之间切换一样快......不是吗喜欢你想要的东西?