通常情况下,我有一个活动堆栈,即A-> B-> C,当我收到推送通知并实现了click_action时,它会打开正确的活动C。
现在,需要做的是,当活动C从按下后退按钮后的推送通知中打开时,它关闭并且整个应用程序都在后台运行,但是我需要导航到主屏幕(活动A)
<activity
android:name="Activity_A"
android:exported="false"
android:screenOrientation="sensorPortrait"
android:theme="@style/MyAppTheme"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name="Activity_B"
android:exported="false"
android:screenOrientation="sensorPortrait"
android:theme="@style/MyAppTheme"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name="Activity_C"
android:exported="false"
android:screenOrientation="sensorPortrait"
android:theme="@style/MyAppTheme"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="Activity_C" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
答案 0 :(得分:1)
之所以会这样,是因为通常以前的活动会保存在堆栈中,并且当用户按下“后退”按钮时,会调用该堆栈,因此,根据我的问题,如果您想通过活动C打开“家庭活动”,只需将意图从活动C调用到家庭通过重写活动C中的onbackpressed()方法来进行活动。 这是一个例子。
Intent homeIntent = new Intent(this,HomeActivity);
startActivity(homeIntent);
finish();
finish()用于删除堆积的活动。
答案 1 :(得分:0)
您可以在活动C的AndroidManifest.xml文件中添加以下行。
android:launchMode="singleTop"
从“通知”中打开并按回时,它将重定向您到家庭活动。希望对您有帮助。
答案 2 :(得分:0)
创建Notification
时,在创建FLAG_ACTIVTY_NEW_TASK
和FLAG_ACTIVTY_CLEAR_TASK
之前,将Intent
和PendingIntent
都添加到Notification
中。 / p>
这将导致ActivityC
在新任务中启动,清除以前可能在那里进行过的所有活动。在后退时按ActivityC
,该应用将没有任何活动,这将使用户重新回到HOME屏幕。重新启动应用程序将从ActivityA
开始。
这不会影响A->B->C
以来的正常活动。