Новый экземпляр программы создается при нажатии на метку NFC - PullRequest
0 голосов
/ 14 ноября 2018

Мое приложение Android использует фильтр намерений для события «NDEF_DISCOVERED», чтобы открыть его, если оно содержит определенный URL-адрес. Он работает нормально, но я заметил, что, если я помещаю свое приложение в фоновом режиме и нажимаю на тег NFC, запускается новый экземпляр программы . Если я сделаю это несколько раз, я получу несколько экземпляров своего приложения. Это вызывает у меня некоторые проблемы, поэтому я хотел бы найти решение, чтобы открыть только один экземпляр.

Дополнительный комментарий: Когда моя программа находится на переднем плане, я использую enableForegroundDispatch () в onResume и отключаюForegroundDispatch () в onPause. Работает нормально.

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

Для сравнения, если я помещаю свою программу в фоновый режим, перехожу к списку программ и нажимаю на мою программу, Android обнаруживает, что эта программа уже открыта, и возобновляет ее, не создавая новый экземпляр (onCreate () из MainActivity не вызывается в этом случае). Почему у нас нет одинакового поведения с событиями NFC и возможно ли такое же поведение?

Я читал эту ветку ( Приложение, получающее NFC, всегда высвечивает новый экземпляр перед ), и это тот же вопрос, но он не помог мне найти решение.

1 Ответ

0 голосов
/ 14 ноября 2018

Я добавил:

android:launchMode="singleTask"

как указано здесь и это действительно работает.

Как сказано в документации: (Источник https://developer.android.com/guide/components/activities/tasks-and-back-stack)

"singleTask":

Система создает новую задачу и создает экземпляр активность в корне новой задачи. Тем не менее, если экземпляр действие уже существует в отдельной задаче, система направляет намерение существующего экземпляра посредством вызова его onNewIntent () метод, а не создание нового экземпляра. Только один экземпляр активность может существовать одновременно.

...