BackHandler
Backhandler API 检测硬件按钮的返回导航按下事件,允许您为系统的返回操作注册事件监听器,并控制应用程序如何响应。它仅适用于 Android。
事件订阅按照相反的顺序调用(即,最后注册的订阅首先被调用)。
- 如果某个订阅返回 true,则不会调用之前注册的订阅。
- 如果没有任何订阅返回 true 或没有注册任何订阅,它会以编程方式调用默认的返回按钮功能以退出应用程序。
模态用户警告:如果您的应用程序显示了一个打开的
Modal
,BackHandler
不会发布任何事件(参见Modal
文档)。
模式
BackHandler.addEventListener('hardwareBackPress', function () {
/**
* this.onMainScreen and this.goBack are just examples,
* you need to use your own implementation here.
*
* Typically you would use the navigator here to go to the last state.
*/
if (!this.onMainScreen()) {
this.goBack();
/**
* When true is returned the event will not be bubbled up
* & no other back action will execute
*/
return true;
}
/**
* Returning false will let the event to bubble up & let other event listeners
* or the system's default back action to be executed.
*/
return false;
});
示例
以下示例实现了一个场景,您需要确认用户是否要退出应用程序
BackHandler.addEventListener
创建一个事件监听器并返回一个 NativeEventSubscription
对象,该对象应使用 NativeEventSubscription.remove
方法清除。
与 React Navigation 一起使用
如果您使用 React Navigation 在不同的屏幕之间导航,您可以按照其关于 自定义 Android 返回按钮行为 的指南。
Backhandler 钩子
React Native Hooks 有一个不错的 useBackHandler
钩子,它可以简化设置事件监听器的过程。
参考
方法
addEventListener()
static addEventListener(
eventName: BackPressEventName,
handler: () => boolean | null | undefined,
): NativeEventSubscription;
exitApp()
static exitApp();
removeEventListener()
static removeEventListener(
eventName: BackPressEventName,
handler: () => boolean | null | undefined,
);