Проверка активности включена на экране при нажатии на уведомление? (С помощью намерения) - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь добавить функцию загрузки изображений в свое приложение, используя android-upload-service .

Я столкнулся с проблемой, не относящейся к библиотеке.

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

код:

val intent = Intent(context, EditorActivity::class.java)
            intent.putExtra("ResourceId", resourceId)//No I18N
            context.startActivity(intent)

Но

  1. Первым требованием является запуск активности, если она не на экране. (Т. Е. Приложение может быть недоступно или я могу выполнять другую деятельность)
  2. Во-вторых, если действие уже выполняется, ничего не делать

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

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Добавьте launchMode="singleTop" к определению <activity> в манифесте. Этого должно быть достаточно, чтобы делать то, что вы хотите. Он сообщает Android, что он должен использовать существующий экземпляр Activity вместо создания нового, если экземпляр этого Activity уже существует в верхней части стека активности в задаче.

Пожалуйста, не используйте один из специальных режимов запуска singleTask или singleInstance, поскольку они обычно создают больше проблем, чем решают, если вы точно не знаете, что делаете.

0 голосов
/ 04 сентября 2018

Сначала добавьте android: launchMode = "singleTask" для этого действия в файле AndroidManifest.xml. Это обеспечит постоянное наличие только одного экземпляра действия.

Пример,

     <activity
        android:name=".activities.MyActivity"
        android:launchMode="singleTask"/>
...