java - 在两个不同的进程上运行两个 Activity

标签 java android process cordova

我正在尝试在 2 个不同的流程上运行 2 个 Activity 。这样做的目的是我的应用程序正在显示我的产品,它添加了我的子产品的主屏幕图标。每当我使用主产品时,我都希望它显示在主流程中,而我的子产品则显示在另一个流程的不同 Activity 中。这样一来,当退出子产品时,可以快速恢复我的主要产品,因为它已经在后台运行。

通读: http://developer.android.com/guide/topics/manifest/activity-element.html#proc

他们声明您可以使用 android:process 属性将 Activity 分成不同的进程。这是我所做的:

<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,两个 Activity 实际上都在同一个进程上运行......

可能是什么问题?

最佳答案

在将子 Activity 的 Intent 设置为 android.intent.category.LAUNCHER(如您所做的那样)后,为第二个 Activity 设置单独的 TaskAffinity 字符串。 例如。在 list 的第二个 Activity 行中,确保您有类似的内容

<activity android:name=".SubProductActivity" android:label="SubActivity"
android:taskAffinity="com.domain.project.SubActivityName">

这会告诉 Android 在单独的进程中运行 SubProductActivity。

另请参阅 https://stackoverflow.com/a/3270422/978329

关于java - 在两个不同的进程上运行两个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8453259/

相关文章:

c - 我怎样才能恰好 fork 6 个进程

java - 在您的经验中发现了最差的 Java 实践?

java - 使用 Spring MVC 中的 POST 参数重定向到外部 URL

java - Android计算器应用程序阻止相邻的运算符(operator)输入

android - 在 Android 中使用递增的日期值填充数组

安卓通知技术

Java 方法需要很长时间才能运行?

java - 比较 Java 中的两个对象列表以删除重复项

c++ - 子进程为 cmd 时 GenerateConsoleCtrlEvent 崩溃

multithreading - 有没有办法从进程的 task_struct 中找出哪个用户拥有进程?