У меня нормальная активность, назовем это A, и это первая активность, представляемая пользователю при открытии приложения. У действия A есть кнопка, которая запускает действие, назовем его B, с launchMode
, установленным в singleInstance
в манифесте. Деятельность B выполняет некоторую обработку.
Пользователи могут нажать кнопку «Домой» и снова открыть приложение, которое представит им начальную активность, также называемую операцией А. Если пользователи снова нажмут на кнопку (в операции А), им будет представлена операция Б. В В этом случае действие B не будет перезапущено, т. е. onCreate
не будет вызвано, поскольку это singleInstance
, что я и хочу.
Я хочу, чтобы пользователям было проще вернуться к действию B, как только оно началось, если они нажали кнопку "Домой". Итак, я создал текущее уведомление, которое позволяет пользователям возвращать активность B. Текущее уведомление будет отменено после завершения действия B.
Теперь к проблеме, щелкнув текущее уведомление, снова воссоздается действие B, то есть снова вызывается onCreate
. Я не знаю, почему поведение здесь не такое, как нажатие на кнопку в упражнении А. Вот как я создал уведомление:
Intent notifyIntent = new Intent(mContext, CallActivity.class);
PendingIntent notifyPendingIntent = PendingIntent.getActivity(
mContext, 0, notifyIntent, PendingIntent.FLAG_NO_CREATE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext, CHANNEL_ID)
.setSmallIcon(R.drawable.baseline_call_white_18)
.setContentTitle(title)
.setContentText(text)
.setOngoing(true)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setContentIntent(notifyPendingIntent);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mContext);
notificationManager.notify(NOTIFICATION_ID, builder.build());
Может кто-нибудь сказать мне, почему это не работает и как я могу заставить его работать так, как я описал?
EDIT
Вот фрагмент моего манифеста:
<application
android:name="com.mnm.caller.IMApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
<activity
android:name="com.mnm.caller.activities.SplashActivity"
android:configChanges="orientation|keyboardHidden"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.mnm.caller.activities.LoginActivity"
android:configChanges="orientation|keyboardHidden"
android:theme="@style/AppTheme.NoTitleBar"
android:screenOrientation="portrait" />
<activity
android:name="com.mnm.caller.activities.HomeActivity"
android:configChanges="orientation|keyboardHidden"
android:theme="@style/AppTheme.NoTitleBar"
android:screenOrientation="portrait" />
<activity
android:name="com.mnm.caller.activities.CallActivity"
android:configChanges="orientation|keyboardHidden"
android:launchMode="singleInstance"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoTitleBar" />
<service
android:name="com.mnm.caller.services.IMFirebaseMessagingService"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>