android从getintent中删除数据

时间:2014-09-15 15:18:50

标签: java android android-intent

我有一个处理深度链接的活动,这是一个可浏览的活动

假设用户点击另一个应用上的链接,我的可浏览活动处理该意图

然后启动应用,然后用户通过按后退按钮

来最小化应用

用于处理意图数据的类代码

Uri link = getIntent().getData();

如果用户从运行任务中重新打开应用程序,则getIntent()仍然具有数据

可浏览活动的onDestroy方法

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
setIntent(null);

}

setIntent(null)无法正常工作

所以我的问题是如何永久删除意图中的数据

2 个答案:

答案 0 :(得分:2)

您必须逐个删除数据。我认为你无法用一行删除所有数据。

如果您要删除特定密钥,请使用==> getIntent().removeExtra("key");

getIntent().setAction("");

它会删除您的数据。

了解更多==> Clearing intent

答案 1 :(得分:2)

我在这里的答案有点迟,但我正在处理类似的问题,并找到了解决方案。您仍然在意图中看到数据的原因是您的应用最初是以包含数据的意图启动的。原始意图存储在Androids' ActivityManager是不可变的,据我所知。当用户从最近的任务"重新打开应用程序时,Android会使用该原始意图来重新创建应用程序。

然而,有一种解决方法。在你的应用程序onCreate()方法中,你可以检查是否设置了Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY,这将允许你的应用程序区分它是否是从最近的任务"或不,因此,您可以避免使用意图中包含的数据。

如果从"最近的任务"

打开了应用,则将以下代码段放入onCreate()方法将返回true

(getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0)