Android 为什么从最近的应用程序返回活动时,意图会重新传递?

Android 为什么从最近的应用程序返回活动时,意图会重新传递?,android,android-intent,android-activity,Android,Android Intent,Android Activity,如果您使用带有捆绑附加功能的Intent启动活动,请按home,然后单击“从最近的应用程序返回到该活动”列表 然后,与这些捆绑额外的意图将重新交付 有人知道这种行为的原因吗? 明智的做法是使用Intent.getFlags并检查FLAG_ACTIVITY_是否从_历史位启动 是否打开,如果是,请避免阅读该意图 谢谢 有人知道这种行为的原因吗 这就是应该发生的事情。您还将重新交付以前使用onSaveInstanceState填充的任何捆绑包。目标是让您向用户展示UI,就好像您一直都在身边一样 明智

如果您使用带有捆绑附加功能的Intent启动活动,请按home,然后单击“从最近的应用程序返回到该活动”列表

然后,与这些捆绑额外的意图将重新交付

有人知道这种行为的原因吗? 明智的做法是使用Intent.getFlags并检查FLAG_ACTIVITY_是否从_历史位启动 是否打开,如果是,请避免阅读该意图

谢谢

有人知道这种行为的原因吗

这就是应该发生的事情。您还将重新交付以前使用onSaveInstanceState填充的任何捆绑包。目标是让您向用户展示UI,就好像您一直都在身边一样

明智的做法是使用Intent.getFlags并检查FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY bits是否已打开,如果是,请避免读取该Intent

总的来说,我认为明智的做法是阅读意图,并按其要求去做。请记住,如果Android在你的应用程序移到后台和用户从最近的任务列表返回到你的应用程序之间终止了你的进程,那么你的活动可能是新创建的

如果您需要状态信息,要确定您是否已经完成了与此操作相关的工作,请将其存储在onSaveInstanceState捆绑包中,或者从持久性存储中派生

也就是说,如果真的需要的话,我们当然欢迎您寻找这面旗帜,并在这种情况下做一些不同的事情。只要确保你仔细考虑,并确保这是真正适合你的情况

有人知道这种行为的原因吗

这就是应该发生的事情。您还将重新交付以前使用onSaveInstanceState填充的任何捆绑包。目标是让您向用户展示UI,就好像您一直都在身边一样

明智的做法是使用Intent.getFlags并检查FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY bits是否已打开,如果是,请避免读取该Intent

总的来说,我认为明智的做法是阅读意图,并按其要求去做。请记住,如果Android在你的应用程序移到后台和用户从最近的任务列表返回到你的应用程序之间终止了你的进程,那么你的活动可能是新创建的

如果您需要状态信息,要确定您是否已经完成了与此操作相关的工作,请将其存储在onSaveInstanceState捆绑包中,或者从持久性存储中派生


也就是说,如果真的需要的话,我们当然欢迎您寻找这面旗帜,并在这种情况下做一些不同的事情。只需确保你仔细思考,并确保这确实符合你的情况。

只有你才能回答这个问题。您已经知道可以检查标志。如果再次读取意图,代码是否正常工作?实际上,你的问题是什么?只有你才能回答这个问题。您已经知道可以检查标志。如果再次读取意图,代码是否正常工作?事实上,你的问题是什么?我明白了,我只是在处理来自Facebook应用程序启动我的应用程序的意图时遇到了这个问题,并且看到这些意图在最近由于活动的重新进行而再次传递似乎很奇怪,所以我有责任决定如何表现。Thanks@MaxRaskin当前位置因此,我有责任决定如何行事-是的。我认为这是一个有用的活动设计目标,因此可以启动一次、两次或更多次而不会造成伤害。但是,有些操作不会以这种方式工作,例如,执行ACTION_INSERT的活动应该注意它是否已经修改了数据存储,这样如果它再次启动,它就不会再次插入。我明白了,我只是在处理Facebook应用程序启动我的应用程序时遇到了这个问题,最近,由于活动的娱乐性,看到这些意图再次被表达出来似乎很奇怪,所以我有责任决定如何表现。Thanks@MaxRaskin当前位置因此,我有责任决定如何行事-是的。我认为这是一个有用的活动设计目标,因此可以启动一次、两次或更多次而不会造成伤害。但是,某些操作将不会以这种方式工作,例如,执行“插入”操作的活动应注意其是否实际已修改了数据存储,以便在再次启动时不会再次插入。