Android 如何返回启动我的应用程序的应用程序

Android 如何返回启动我的应用程序的应用程序,android,android-intent,Android,Android Intent,背景: 我的应用程序(我称之为“A”)可以从一个意图开始。如果单击了特定的URL,则会打开一个URL 具有自定义导航,因此“后退”按钮并不总是覆盖super.onBackPressed()或finish()它 问题: 从另一个应用程序打开A后,比如说电子邮件应用程序(我将称之为“E”),A无法返回到E。如果我单击“任务”按钮,用户可以看到当前正在运行的应用程序的名称、图标和缩略图,我可以看到E(图标和名称)具有缩略图A,而不是E。当我单击它时,我转到A,无法返回到E 问题: 有没有办法从a回到E

背景:

我的应用程序(我称之为“A”)可以从一个意图开始。如果单击了特定的URL,则会打开一个URL

具有自定义导航,因此“后退”按钮并不总是覆盖super.onBackPressed()或finish()它

问题:

从另一个应用程序打开A后,比如说电子邮件应用程序(我将称之为“E”),A无法返回到E。如果我单击“任务”按钮,用户可以看到当前正在运行的应用程序的名称、图标和缩略图,我可以看到E(图标和名称)具有缩略图A,而不是E。当我单击它时,我转到A,无法返回到E

问题:

有没有办法从a回到E? 我是否应该跟踪活动堆栈,以便随时返回到它? 我知道我不能强制关闭应用程序,但我可以在A打开之前从E关闭E打开A吗?有没有办法在意向书上说明这种行为


提前感谢。

我找到了一个有效的解决方案

我检查A的活动是否来自E,在这种情况下,我清除活动堆栈并重新启动A


这个答案帮助了我:

你只需要完成()你的活动…到底是什么问题?(仅供参考:我认为使用“自定义导航”覆盖“返回”功能不是一个好主意……这对用户来说是一个非常糟糕的体验!因为它会返回到上一个活动(E)通过按back…Thank you@jpm,问题是我将E与A连接,因此用户可以在A中执行一些操作并返回E。这些操作具有一定的逻辑,必须覆盖back按钮。在它之后是DetailActivity,即SelectionActivity,之后是ConfirmationActivity,在ConfirmationActivity中,用户不应该来ba回到SelectionActivity,实际上在这个特定的例子中,这将是一个糟糕的用户体验,但是回到DetailActivity。我在想,是否有一种方法可以在意图(清单)中说“忘记过去的活动”在启动新的活动之前。嗯,好的,我想我还没有真正了解用例。但是,要忘记过去的活动,你应该看看你可以传递给意图的标志,例如。也许其中一个对你有帮助……另外,在你的活动中可以使用setResult与调用活动进行通信。当然,这取决于如何使用ActivityResult在呼叫活动/应用程序中处理…我没有找到正确的方法,但我在A中修复了它,当我从E来时跟踪,在这种情况下,使用finish返回E。我仍然想知道如何从E开始A,保持他们不连接。希望有人能回答:)谢谢@jpm的帮助。
if(comesFromE()){
    Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);
    finish();
}