Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 意图附加包含信息,即使活动被破坏并重新启动_Android_Android Intent - Fatal编程技术网

Android 意图附加包含信息,即使活动被破坏并重新启动

Android 意图附加包含信息,即使活动被破坏并重新启动,android,android-intent,Android,Android Intent,我的应用程序是使用一个标签启动的,并基于标签中包含的信息,它将继续运行。现在我的应用程序也可以通过触摸图标启动,之后它会要求用户触摸标签。小流量如下所示 因此,MainActivity可能包含标记数据(如果从TagProcessorActivity启动),也可能不包含数据(如果从图标启动启动启动)。数据作为额外值从TagProcessorActivity传递到IconLaunchActivity,然后传递到MainActivity。主活动之后,应用程序操作继续进行。当我离开主要活动时,我以前的

我的应用程序是使用一个标签启动的,并基于标签中包含的信息,它将继续运行。现在我的应用程序也可以通过触摸图标启动,之后它会要求用户触摸标签。小流量如下所示

因此,MainActivity可能包含标记数据(如果从TagProcessorActivity启动),也可能不包含数据(如果从图标启动启动启动)。数据作为额外值从TagProcessorActivity传递到IconLaunchActivity,然后传递到MainActivity。主活动之后,应用程序操作继续进行。当我离开主要活动时,我以前的所有活动都将完成。我已经检查了是否为每个活动调用onDestroy()。现在,如果我在MainActivity之后注销(注销只是一个关闭所有现有活动的功能),并从最近的应用程序重新启动我的应用程序,我的标记详细信息仍然会出现在MainActivity中,我不知道为什么

更清楚地说,我的问题是:

1)为什么被销毁的活动仍然包含上次发布的信息。

2) 我知道removeExtra()方法,但是有没有更好的方法来解决这个问题

3) 尽管如此,我的代码中是否存在一些错误,或者安卓是否保留了intent的额外实例


PS:不清楚要发布哪段代码,因此如果需要,请随时询问代码。

应用程序在Android中永远不会退出。onDestroy只销毁活动,而不销毁应用程序中留下的任何静态变量。这些将在下次启动活动时保持其价值。这可以与其他一些功能相结合(比如从“最近的任务”菜单启动,从而使您启动相同的意图),这就是您将获得的行为。我一直使用的答案是检测这种情况(通过检查意图,有一个字段显示这是重新启动还是重新启动),如果是,则忽略意图附加项

从最近启动的已完成任务(与主屏幕启动器图标相反)将接收旧的
意图
,包括其附加内容、数据等。有一种方法可以知道它是从最近启动的,因此您可以适当地处理
意图

protected boolean wasLaunchedFromRecents() {
    return (getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY;
}
依我拙见,该标志的名称很差(引用最近列表的其他标志实际上使用该词,例如,
标志活动从最近的
标志活动保留在最近的
)而且文档从未更新以反映以下事实,即许多流行的Android设备都有一个专用的按钮:

此标志通常不由应用程序代码设置,但如果此活动是从历史记录启动的(长按home键),则由系统为您设置


好的,那么我是否需要在每次创建活动时检查所有活动的重新启动或刷新,或者使用某种更好的方法来解决这个问题,比如某个标志总是创建新的意图,而忽略以前的意图(如果创建的话)或者更早地销毁并重新创建一个新的意图。您好,您解决了问题吗?当前我面临这个问题。我不知道如何从历史记录中清除活动的意图,因为数据仍然存在