Как мне запустить только один процесс из одного приложения? - PullRequest
0 голосов
/ 01 октября 2018

У меня проблема с разрабатываемым приложением Android, из-за которого система запускает 2 процесса одного и того же приложения, когда я нажимаю кнопку «вверх» на одной конкретной операции.

Чтобы быть болеев частности, давайте назовем это действие Z и его родителя, как объявлено в манифесте, Y. Если я начну действие Z с действия X и нажму кнопку панели действий вверх, действие Y будет запущено, а затем у меня будет 2запущенные процессы: один с действием Y, а другой с Z.

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

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

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

Манифест

        <activity android:name=".feature.stations.X"
            android:taskAffinity="@string/affinity_petrol_stations"
            android:theme="@style/AppTheme.NoActionBar"/>

        <activity android:name=".feature.stations.Y"
            android:taskAffinity="@string/affinity_petrol_stations"
            android:theme="@style/AppTheme.NoActionBar">
            <meta-data android:name="android.support.PARENT_ACTIVITY"
                android:value=".feature.stations.X"/>
        </activity>

        <!-- THIS IS THE ACTIVITY THAT CAUSES THE ISSUE -->
        <activity android:name=".feature.stations.Z"
            android:taskAffinity="@string/affinity_petrol_stations"
            android:theme="@style/AppTheme.NoActionBar">
            <meta-data android:name="android.support.PARENT_ACTIVITY"
                android:value=".feature.stations.Y"/>
        </activity>

Снимок экрана 2 processes running

Процесс вверху показывает активность Z, а тот внизу показывает Y.

1 Ответ

0 голосов
/ 01 октября 2018

Мне удалось решить мою проблему, удалив тег meta-data из этого действия, а затем вручную реализовав поведение кнопки «вверх», как в примере ниже:

override fun onOptionsItemSelected(item: MenuItem?): Boolean {
    when (item?.itemId) {
        ...
        android.R.id.home -> finish()
    }
    return super.onOptionsItemSelected(item)
}
...