Я испытываю небольшую боль на Android. У меня есть два действия: один - это экран заставки, который запускается при нажатии на значок приложения и другой, который может проснуться, когда произошло определенное событие (событие NFC, но это не проблема).Как я могу настроить действие, которое будет возобновлено (по многозадачности)
Существует декларация в манифесте:
<activity android:label="@string/general.appName" android:name=".activity.SplashActivity" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:excludeFromRecents="true" android:label="@string/general.appName" android:name=".EventReceiver" android:noHistory="true" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.nfc.action.TRANSACTION_DETECTED">
</action>
<category android:name="android.intent.category.DEFAULT">
</category>
<data android:host="secure" android:path="/aXXXXX" android:port="0" android:scheme="nfc"/>
</intent-filter>
</activity>
Все работает нормально, это означает, что EventReceiver запускается, когда он получил определенное событие, Splash Screen функциональна и т.д ... Но, когда приложение запускается событием, поэтому сначала запускается EventReceiver. Если я приостанавливаю приложение, нажав на кнопку дома на телефоне, и, долго нажимая на нее снова, появляется многозадачная таблица со всеми недавними открытыми приложениями. Там, я нажимаю на свое приложение, он возобновил приложение в EventReceiver, как если бы произошло событие. Итак, вы знаете способ возобновления приложения только в одном выбранном действии (в моем случае SplashScreen). Или вы знаете способ узнать, что приложение было возобновлено с помощью многозадачной функции? (Я мог бы открыть хорошую активность в onCreate моего EventReceiver, если я получу эту информацию).
На данный момент единственным решением, которое я нашел, является установка флага android: excludeFromRecents = "true" в моей активности EventReceiver. Это приведет к тому, что приложение не будет отображаться в многозадачной таблице, если приложение было запущено событием. Но это немного сложно, и мне это не очень нравится.
Есть ли у вас идеи?
Спасибо за ваши ответы! (и извините за моего ученого English ^^)
Я попробую это немедленно. –
Спасибо, он отлично работает в моем случае, просто используя ваш код и: if ((getIntent () .getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY)! = 0) { \t \t startActivity (новое намерение (это, HomeActivity.класс)); \t \t отделка(); \t \t} –