Параметр намерения всегда сохранялся при входе из диспетчера задач - PullRequest
0 голосов
/ 07 января 2019

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

    fun makeShortcut(id: String, @StringRes shortLabel: Int, @StringRes longLabel: Int,
                         @DrawableRes icon: Int, action: String, cmd: String): ShortcutInfo {

            return ShortcutInfo.Builder(context(), id)
                    .setShortLabel(context().getString(shortLabel))
                    .setLongLabel(context().getString(longLabel))
                    .setIcon(Icon.createWithResource(context(), icon))
                    .setIntents(arrayOf(
                            Intent(action).putExtra(KEY_CMD, cmd)
                    ))
                    .build()
        }

После начала занятия я делаю кое-что и заканчиваю упражнение. Я запускаю активность из диспетчера задач. Значение, переданное KEY_CMD , все еще существует. Я хочу очистить значения при входе активности из диспетчера задач.

1 Ответ

0 голосов
/ 07 января 2019

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

Чтобы решить вашу проблему, вы можете попробовать создать <activity-alias>, который вы используете для ярлыка. <activity-alias> указывает на тот же <activity>, который вы используете в качестве основного средства запуска, но вы можете указать другие флаги и поведение. Если вы укажете android:excludeFromRecents="true" в <activity-alias> и используете <activity-alias> в своем ярлыке, это должно решить вашу проблему.

Если все ваше приложение содержит только один Activity, то вы, вероятно, легко решите свою проблему, добавив android:excludeFromRecents="true" для вашего Activity в манифесте (в этом случае вам не нужен <activity-alias>) .

...