在我的申请中,我有3项活动:
MainActivity
,这是启动应用时出现的主屏幕SettingsActivity
,从MainActivity
DownloadActivity
,从SettingsActivity
开始。 DownloadActivity
列出了供用户下载的应用内容列表。实际下载由Android DownloadManager
处理,它显示正在进行的下载的通知。点击该通知将触发一个意图,该意图将用户带到DownloadActivity
。
现在,如果我执行以下操作:
启动应用,转到SettingsActivity
,然后转到DownloadActivity
。
开始下载,然后点击返回两次以返回MainActivity
。
下拉通知并点按下载nofification,这会将我带回DownloadActivity
。
回击。
重复步骤3和4两次。
我第一次执行第4步时,后退按钮会直接从DownloadActivity
转到MainActivity
- 应用程序在我点击通知之前显示的最后一个活动,这就是我想要的。< / p>
然而,第二次,“后退”按钮会在当前的下方显示第二个DownloadActivity
,我需要再次点击返回MainActivity
。
第三次,有4个DownloadActivity
个实例,需要按下Back
按钮四次才能返回MainActivity
。
处理点按的代码如下:
Intent downloadIntent = new Intent(activity.getApplicationContext(), downloadActivity.class);
downloadIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
activity.getApplicationContext().startActivity(downloadIntent);
(activity
是对开始下载的活动的引用。)
导致这种奇怪行为的原因是什么,以及如何使“后退”按钮始终返回应用程序显示的上一个活动?
答案 0 :(得分:0)
事实证明这很简单。这种改变起到了作用:
- downloadIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
+ downloadIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);