Как я могу убедиться, что Android Beam не запускает новый экземпляр моей активности 'singleTop? - PullRequest
4 голосов
/ 19 февраля 2012

Во-первых, пример использования: на двух экранах мое приложение открыто на одном экране.Я хочу, чтобы один пользователь мог обмениваться содержимым экрана (данными) с другим без необходимости открывать новый экземпляр действия при использовании луча с использованием NFC.(оба устройства Android работают под управлением Ice Cream Sandwich)

Итак, у меня в манифесте объявлено singleTop действие, как это указано.запускается, и действие уже на вершине, метод onNewIntent() вызывается в том же экземпляре, если действие.

Когда срабатывает действие NDEF_DISCOVERED и действие ужесверху onCreate() метод вызывается в новом экземпляре действия.

Ответы [ 4 ]

4 голосов
/ 21 февраля 2012

Вы описываете случай, когда приложение уже открыто и правильная активность находится на переднем плане.В этом случае вы можете использовать приоритетную диспетчеризацию намерений NFC, вызвав NfcAdapter.enableForegroundDispatch() в вашей деятельности onResume()disableForegroudDispatch() в onPause()).Это приведет к тому, что все Содержимое NFC будет доставлено в Вашу активность (через onNewIntent()).

0 голосов
/ 10 мая 2012

Вы должны использовать: android: launchMode = "singleInstance" У меня работает.

0 голосов
/ 23 февраля 2012

Посмотрели ли вы образец Android Beam:

http://developer.android.com/resources/samples/AndroidBeamDemo/index.html

Он реализует такое поведение, которое вам нужно (за исключением фильтрации намерений VIEW).Я не уверен, повлияет ли это намерение на NDEF_DISCOVERED, но было бы интересно, возможно, изменить образец Android Beam, чтобы увидеть, можете ли вы вызвать то же поведение, что и в приложении.

0 голосов
/ 20 февраля 2012

У меня нет ответа для вас.Но у меня есть обходной путь: NDEF_DISCOVERED может начать новое действие.Сделайте это действие невидимым (Theme.NoBackground) и в onCreate начните MyActivity с singleTop и немедленно завершите.MyActivity должно теперь появиться с onNewIntent.

...