实际上我有一个Android自定义标签的直接问题。
但是,我会概括我的问题。我们假设我有ActivityA
和ActivityB
。 ActivityA
- 是外部的,因此我们从Intent中启动它:
Intent intent = customTabsIntent.intent;
intent.setData(requestUri);
intent.putExtra(CustomTabsIntent.EXTRA_TITLE_VISIBILITY_STATE, CustomTabsIntent.NO_TITLE);
mContext.startActivity(intent);
从这里我们看到ActivityA
- 实际上是一个自定义标签活动。当事情完成后,我启动ActivityB
。我希望ActivityA
从任务历史记录中消失,我可以通过将Intent.FLAG_ACTIVITY_NO_HISTORY
标记到我的意图来实现这一点。但是这种方法会导致问题,因为当用户切换到最近,或转到其他应用程序时 - ActivityA
会永远消失。当然 - 这就是没有历史的旗帜。但我想要一个不同的流程,我希望ActivityA
仅在ActivityB
启动时消失。任何想法如何实现这一目标?
P.S。我需要完成ActivityA
,它是通过意图启动的,我无法访问其代码而我无法调用finish()
。 < / p>
答案 0 :(得分:1)
我认为你不能通过使用NO_HISTORY标志来做到这一点,因为ActivityA
正在进行启动而你无法控制它。
但是,您应该能够实现目标(无法通过覆盖ActivityB
中的“返回”按钮,将ActivityA
转回ActivityB
并让它回归到任何目标在任务堆栈中位于ActivityA
下面。
假设ActivityC
是ActivityA
的{{1}},您可以在ActivityB
中执行以下操作:
@Override
public void onBackPressed() {
// Direct user back to ActivityC
Intent intent = new Intent(this, ActivityC.class);
// Add flags to ensure that we reuse the existing instance of
// ActivityC and that we clear any other activities above ActivityC
// from the stack.
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
}
答案 1 :(得分:0)
您可以使用finish()
方法清除任何活动。所以在开始另一个activity
完成之前。
Intent intent = customTabsIntent.intent;
intent.setData(requestUri);
intent.putExtra(CustomTabsIntent.EXTRA_TITLE_VISIBILITY_STATE, CustomTabsIntent.NO_TITLE);
mContext.startActivity(intent);
finish(); //add this to clear that activity