uni-app 拦截再按一次退出应用,改成单击back隐藏到后台

发布于 1周前 作者 phonegap100 来自 Uni-App

uni-app 拦截再按一次退出应用,改成单击back隐藏到后台

大家好,今天在给大家分享一下uniapp开发经验。关于常规的我就不说了。相信大家在开发的过程中难免会遇到需要APP后台运行的功能,这个使用5+就可以实现的。

let main = plus.android.runtimeMainActivity();  
//为了防止快速点按返回键导致程序退出重写quit方法改为隐藏至后台  
plus.runtime.quit = function(){  
    main.moveTaskToBack(false);  
};  
//重写toast方法如果内容为 ‘再按一次退出应用’ 就隐藏应用,其他正常toast  
plus.nativeUI.toast = (function(str){  
    if(str == '再按一次退出应用'){  
        main.moveTaskToBack(false);  
        return false;  
    }else{  
        uni.showToast({  
            title:str,  
            icon:'none',  
        })  
    }  
});

其他功能插件:

1、uniapp图片裁剪插件

2、swiper + scroll-view 实现下拉刷新


1 回复

在uni-app中,默认行为是当用户连续两次点击返回按钮时退出应用。为了实现单击返回按钮将应用隐藏到后台,而不是退出应用,可以通过监听返回按钮事件并在单次点击时执行隐藏应用的操作。以下是如何实现这一功能的代码示例:

首先,需要在App.vueonShowonHide生命周期函数中维护一个计时器,用于检测用户是否连续点击了返回按钮。

<script>
export default {
  data() {
    return {
      lastBackTime: 0 // 上次返回按钮点击的时间戳
    };
  },
  methods: {
    handleBackClick() {
      const currentTime = new Date().getTime();
      if (currentTime - this.lastBackTime < 2000) { // 2秒内连续点击两次返回按钮则退出应用
        uni.exitApp();
      } else {
        this.lastBackTime = currentTime;
        uni.hideHomeButton(); // 隐藏返回按钮(iOS特有,Android无效)
        // 执行隐藏应用到后台的操作,对于Android,可以使用以下方式:
        #ifdef APP-PLUS
        plus.runtime.quit(); // 注意:plus.runtime.quit() 在Android上实际是结束应用,而非隐藏到后台
                             // Android上隐藏到后台可以通过其他方式,比如启动一个透明Activity
        #endif
        // 由于Android没有直接隐藏到后台的API,可以通过其他机制实现,比如启动一个透明的Activity
        // 这里提供一个思路,不直接给出完整代码,因为涉及原生开发部分。
        // 你可以在HBuilderX中创建一个原生插件,通过JS调用该插件来实现隐藏应用到后台的功能。
      }
    }
  },
  onShow() {
    // 注册返回按钮点击事件
    if (process.env.PLATFORM === 'app-plus') {
      plus.key.addEventListener('backbutton', this.handleBackClick);
    }
  },
  onHide() {
    // 取消注册返回按钮点击事件
    if (process.env.PLATFORM === 'app-plus') {
      plus.key.removeEventListener('backbutton', this.handleBackClick);
    }
  },
  onUnload() {
    // 确保在应用卸载时取消注册事件监听
    if (process.env.PLATFORM === 'app-plus') {
      plus.key.removeEventListener('backbutton', this.handleBackClick);
    }
  }
};
</script>

注意

  1. uni.hideHomeButton() 是iOS特有的API,Android上无效。
  2. plus.runtime.quit() 在Android上是结束应用而非隐藏到后台。Android上没有直接隐藏应用到后台的API,需要通过原生开发来实现,比如通过启动一个透明的Activity来模拟隐藏效果。
  3. 由于涉及原生开发部分,这里不直接给出完整的Android实现代码,但提供了一个通过原生插件实现的思路。你可以在HBuilderX中创建原生插件来实现这一功能。
回到顶部