Выполнение двух действий на двух разных процессах - PullRequest
2 голосов
/ 10 декабря 2011

Я пытаюсь выполнить 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, оба актива фактически работают на одном и том же процессе ...

В чем может быть проблема?

Ответы [ 3 ]

3 голосов
/ 22 декабря 2011

После установки намерения субактивности на android.intent.category.LAUNCHER (как вы правильно сделали), установите отдельную строку TaskAffinity для второго действия.Например, во второй строке действия в манифесте убедитесь, что у вас есть что-то похожее на

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

Это говорит Android о запуске SubProductActivity в отдельном процессе.1007 *

2 голосов
/ 10 декабря 2011

Я пытаюсь выполнить 2 действия на 2 разных процессах.

Почему?

Цель этого состоит в том, чтобы мое приложение отображало мой продукт, который добавляет значки моих субпродуктов на рабочем столе.

Казалось бы, это не имеет никакого отношения к тому, чтобы они были в отдельных процессах.

Это так, что при выходе из подпродукта возобновление работы моего основного продукта может быть быстрым, поскольку он уже работает в фоновом режиме.

Было бы еще быстрее, не говоря уже о значительно более эффективном использовании памяти, работать в одном процессе. Все остальные ваши действия останутся в памяти в любом случае - их использование в каком-то отдельном процессе не изменит этого.

В чем может быть проблема?

Возможно, есть ошибка в вашей регистрации. Возможно, будет работать более простое имя процесса (например, :remote).

Однако самый простой ответ - удалить атрибут android:process.

1 голос
/ 10 декабря 2011

Не знаю, правильно ли я понял ваш вопрос, но ...

Если вы запускаете действие субпродукта из MainProductActivity, android сохраняет MainProductActivity в памяти, и если вы выходите из SubProductActivity (с помощью кнопки назад, например), оно должно быть настолько быстрым, насколько андроид может переключаться между операциями ... Не так ли как то, что вы хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...