выход из приложения после второго нажатия назад, используя тост - PullRequest
0 голосов
/ 01 октября 2019

Этот exitAlert является вызовом после нажатия кнопки Android, я хочу отключить выход после закрытия тоста, так как у тоста нет события закрытия, я использую тайм-аут для его отключения, очевидно, что приведенный ниже код не отключает выход второго нажатия:

    const exitAlert = () => {
        const duration = 3 * 1000;
          showToast('Press again to exit', duration, 'top');

          BackHandler.addEventListener('hardwareBackPress', () => {
            BackHandler.exitApp();
          });

          setTimeout(() => BackHandler.removeEventListener('hardwareBackPress', () => {}), 
          duration);
    }

Хорошо, это работает:

let pressTwice = true;
  const duration = 3 * 1000;
  showToast('Confirm exit', duration, 'top');

  BackHandler.addEventListener('hardwareBackPress', () => {
    if (pressTwice) {
      BackHandler.exitApp();
    }
  });

  setTimeout(function() {
    pressTwice = false;
  }, duration);

1 Ответ

1 голос
/ 01 октября 2019

Это может сработать

componentDidMount(){
   let oncePressed = false;
   const duration = 3 * 1000;
   BackHandler.addEventListener('hardwareBackPress', () => {
       if(oncePressed){
            oncePressed = false;
            BackHandler.exitApp();
       }else{
            showToast('Press again to exit', duration, 'top');
            oncePressed = true
            setTimeout(() => BackHandler.removeEventListener('hardwareBackPress', () => {
                 oncePressed = true
            }), 
             duration);
       }
   });
}
...