系统导航是手势时如何调用onUserLeaveHint?

Posted

技术标签:

【中文标题】系统导航是手势时如何调用onUserLeaveHint?【英文标题】:How to call onUserLeaveHint when the system navigation are by gestures? 【发布时间】:2020-11-20 20:35:06 【问题描述】:

此时我正在为 android 实现画中画功能,正如文档所说,当用户使用 onUserLeaveHint() 方法通过主页按钮离开应用程序时,我们应该进入画中画模式,它按预期工作在具有物理按钮的设备中,但是当手机没有并且像 iPhone 这样使用手势时,不会调用 onUserLeaveHint 方法,那么有没有办法捕捉或模拟这种行为?

【问题讨论】:

【参考方案1】:

onUserLeaveHint() 不是检测“主页”按钮点击的可靠 Android 生命周期回调。尽管官方文档规定你可以用它来检测“当用户按下 Home 键时”,我发现这是错误的。

例如,onUserLeaveHint() 可能会在提示 Android 原生对话框时调用,或者在您启动另一个 Activity 时调用。 另外,对于您提到的示例,我还发现当启用手势导航(Android 11 及更高版本)并且用户转到“Recents”然后存在应用程序 - onUserLeaveHint() 将不会被调用。

不幸的是,直到今天我还没有找到任何密封的方法来检测 Android 中的“主页”按钮点击。我猜操作系统设计者不希望应用开发者轻易发现这一点。

【讨论】:

以上是关于系统导航是手势时如何调用onUserLeaveHint?的主要内容,如果未能解决你的问题,请参考以下文章

怎么设置滑动返回键

如何增加导航控制器向后滑动手势响应区域?

swift - 指定VC隐藏导航栏 - 禁用tabbar的根控制器手势,防止两个tabbar跳转 手势冲突

如何使 Android BottomSheetDialogFragment 出现在系统/手势栏后面?

右滑退出手势及隐藏导航栏存在的风险

自定义导航栏返回时的滑动手势处理