我有 2 个活动(A 和 B),它们有 2 个按钮可以在它们之间切换。
- 一个 oncreate
- B oncreate
- 一个 oncreate
- 一份简历
我想做的是在将意图从 B 发送到 A 之后,不应调用 oncreate,但此时它确实如此。为了克服这个问题,我找到了 FLAG_ACTIVITY_REORDER_TO_FRONT (从这里)并认为它只能调用 onresume 但它没有。
我有 2 个活动(A 和 B),它们有 2 个按钮可以在它们之间切换。
我想做的是在将意图从 B 发送到 A 之后,不应调用 oncreate,但此时它确实如此。为了克服这个问题,我找到了 FLAG_ACTIVITY_REORDER_TO_FRONT (从这里)并认为它只能调用 onresume 但它没有。
FLAG_ACTIVITY_REORDER_TO_FRONT
does exactly what you think it should do. However, if you start ActivityA
and then ActivityA
starts ActivityB
and calls finish()
on itself, then when ActivityB
starts ActivityA
with an Intent that has FLAG_ACTIVITY_REORDER_TO_FRONT
there will be no instance of ActivityA
to bring to the front. In this case Android will simply create a new one. I can only assume that is what you are seeing.
FLAG_ACTIVITY_REORDER_TO_FRONT
更改活动历史记录。如果在先前访问过的活动(在任务中)的历史记录中找到所请求的活动,则清除此活动的较旧历史记录。因此,在按下后退按钮时,用户不会在任务中遇到此活动。
此标志不会影响对 的调用onCreate()
,如果任务中不存在活动(未加载或销毁),onCreate()
将调用创建它。
您不能只取消 onCreate。如果 B 是全屏活动,android 可以杀死 A 活动,并在您尝试使用 FLAG_ACTIVITY_REORDER_TO_FRONT 标志重新启动它并调用它的 onCreate 方法时重新创建它。如果 Activity A 在您尝试将其置于最前面时仍然处于活动状态,则不应调用 onCreate 方法。
也许在你的情况下你应该尝试使用片段?