【发布时间】:2020-04-23 15:22:47
【问题描述】:
标题不言自明:我想知道新活动是否可以在 onCreate() 完成之前处理 onBackPressed()。换句话说,在生命周期的哪个阶段,软后退按钮触摸的处理转移到了新创建的活动?
提前致谢。
【问题讨论】:
-
创建,附加活动和onBackpressed都在主循环线程上同步调用,我相当肯定在
onCreate的生命周期链之前触发任何按钮/触摸/键盘回调是不可能的-> @987654322 @ ->onResume结束。 -
这是否意味着如果用户在 onCreate() 期间按下后退按钮,onBackPressed() 将在新活动的 onResume() 之后调用?还是会被之前的activity调用?
-
您可以通过在 onCreate 中添加
Thread.sleep来自己进行快速测试。我这样做了,我得到的是按键将被延迟到onResume完成,然后您将在onKeyDown/onKeyUp方法中收到它们,KEYCODE_BACK但onBackPressed本身不会被触发。 -
我现在明白了,谢谢。但这又给我带来了另一个问题:如果主线程正在做一些工作,而用户按下了返回按钮,会不会中断主线程来处理它?换句话说,我什么时候可以期待 onBackPressed() 被调用?随时?
标签: android android-activity android-lifecycle android-softbuttons