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)