android从getintent中删除数据

Nis*_*war 4 java android android-intent

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

假设用户单击另一个应用程序上的链接,我的可浏览 Activity 处理该意图

并启动应用程序,然后用户通过按后退按钮最小化应用程序

处理意图数据的类代码

Uri link = getIntent().getData();
Run Code Online (Sandbox Code Playgroud)

如果用户通过运行任务重新打开应用程序 getIntent() 仍然有数据

可浏览活动的 onDestroy 方法

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

}
Run Code Online (Sandbox Code Playgroud)

setIntent(null) 不起作用

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

小智 7

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

但是,有一个解决方法。在您的应用程序的 onCreate() 方法中,您可以检查是否设置了 Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY,这将允许您的应用程序区分它是否正在从“最近的任务”启动,因此,您可以避免使用数据包含在意图中。

true如果应用程序是从“最近的任务”打开,则将以下代码段放入您的 onCreate() 方法将返回

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