我有2个活动(A和B),它们有2个按钮可以切换。
我想要做的是在将意图从B发送到A之后,不应该调用oncreate,但此时确实如此。为了克服这个问题,我发现了FLAG_ACTIVITY_REORDER_TO_FRONT(from here)并认为它只能调用onresume,但事实并非如此。
答案 0 :(得分:2)
FLAG_ACTIVITY_REORDER_TO_FRONT
完全按照您的认为应该做的。但是,如果您启动ActivityA
,然后ActivityA
启动ActivityB
并自行调用finish()
,那么当ActivityB
启动ActivityA
并且意图为FLAG_ACTIVITY_REORDER_TO_FRONT
ActivityA
没有{{1}}的实例可以带到前面。在这种情况下,Android将只创建一个新的。我只能认为这就是你所看到的。
答案 1 :(得分:0)
FLAG_ACTIVITY_REORDER_TO_FRONT
更改活动历史记录。如果在先前访问过的活动的历史记录中找到所请求的活动(在任务中),则会清除此活动的旧历史记录。因此,在按下后退按钮时,用户将不会在任务中遇到此活动。
此标志不会影响对onCreate()
的调用,如果任务中没有活动(未加载或销毁),则会调用onCreate()
来创建它。
答案 2 :(得分:0)
你不能只取消onCreate。如果B是全屏活动,android可以杀死A活动,并在尝试使用FLAG_ACTIVITY_REORDER_TO_FRONT标志重新启动它时重新创建它并调用它的onCreate方法。如果当你尝试将活动A放在前面时活动A仍然存在,则不应该调用onCreate方法。
也许在你的情况下你应该尝试使用片段?