@@ -29,7 +29,7 @@ export default class MenuProvider extends Component {
29
29
super ( props ) ;
30
30
this . _menuRegistry = makeMenuRegistry ( ) ;
31
31
this . _isMenuClosing = false ;
32
- this . _isBackHandlerRegistered = false ;
32
+ this . _backHandlerSubscription = null ;
33
33
const menuActions = {
34
34
openMenu : name => this . openMenu ( name ) ,
35
35
closeMenu : ( ) => this . closeMenu ( ) ,
@@ -76,8 +76,9 @@ export default class MenuProvider extends Component {
76
76
77
77
componentWillUnmount ( ) {
78
78
debug ( 'unmounting menu provider' )
79
- if ( this . _isBackHandlerRegistered ) {
80
- BackHandler . removeEventListener ( 'hardwareBackPress' , this . _handleBackButton ) ;
79
+ if ( this . _backHandlerSubscription != null ) {
80
+ this . _backHandlerSubscription . remove ( ) ;
81
+ this . _backHandlerSubscription = null ;
81
82
}
82
83
const { skipInstanceCheck } = this . props ;
83
84
if ( ! skipInstanceCheck ) {
@@ -96,11 +97,10 @@ export default class MenuProvider extends Component {
96
97
return Promise . resolve ( ) ;
97
98
}
98
99
debug ( 'open menu' , name ) ;
99
- if ( ! this . _isBackHandlerRegistered ) {
100
+ if ( this . _backHandlerSubscription == null ) {
100
101
// delay menu registration until the menu is really opened (and thus this back handler will be called "sooner")
101
102
// too soon registration can cause another back handlers (e.g. react navigation) to be called instead of our back handler
102
- BackHandler . addEventListener ( 'hardwareBackPress' , this . _handleBackButton ) ;
103
- this . _isBackHandlerRegistered = true ;
103
+ this . _backHandlerSubscription = BackHandler . addEventListener ( 'hardwareBackPress' , this . _handleBackButton ) ;
104
104
}
105
105
menu . instance . _setOpened ( true ) ;
106
106
return this . _notify ( ) ;
0 commit comments