ionic App问题总结系列之ionic点击系统返回键退出App

发布时间 - 2026-01-11 02:52:25    点击率:

在安卓下,如果不处理系统返回键的事件,那么每次点击返回键,将页面将返回到上一个路由,这种逻辑不符合app的路由逻辑。正确的应该是:当页面到了各个导航页的首页时,此时再按返回键应该提示是否退出app,用户点击确认后退出app。

在run()方法中添加下面的方法

$ionicPlatform.registerBackButtonAction(function (e){
    //阻止默认的行为
    e.preventDefault();
    // 退出提示框
    function showConfirm() {
     var servicePopup = $ionicPopup.show({
      title: '提示',
      subTitle: '你确定要退出应用吗?',
      scope: $rootScope,
      buttons: [
       {
        text: '取消',
        type: 'button-clear button-assertive',
        onTap: function () {
         return 'cancel';
        }
       },
       {
        text: '确认',
        type: 'button-clear button-assertive border-left',
        onTap: function (e) {
         return 'active';
        }
       },
      ]
     });
     servicePopup.then(function (res) {
      if (res == 'active') {
       // 退出app
       ionic.Platform.exitApp();
      }
     });
    }
     // 判断当前路由是否为各个导航栏的首页,是的话则显示提示框
    if ($location.path() == '/index' || $location.path() == '/product' || $location.path() == '/account' || $location.path() == '/more') {
     showConfirm();
    } else if ($ionicHistory.backView()) {
     $ionicHistory.goBack();
    } else {
     showConfirm();
    }
    return false;
   }, 101); //101优先级常用于覆盖‘返回上一个页面'的默认行为
 

$ionicPlatform.registerBackButtonAction()

该方法是用来注册系统返回键事件。每次点击只会执行最高优先级的那个行为。比如当页面存在一个modal框的时候,此时点击系统返回键则是关闭modal框,而不是返回上个视图。

ionic官方已经定义了常用的行为的优先级:

  • 返回上个视图=100;
  • 关闭侧栏菜单=150;
  • 关闭Modal=200;
  • 关闭 action sheet=300;
  • 关闭popup=400;
  • 关闭loading=500;

用法如下:

registerBackButtonAction(callback, priority, [actionId])

所以当你要重写ionic官方定义上面那些行为,你只需要设置优先级大于那些行为的优先级即可。比如你要覆盖的是返回上个视图的行为,那么你只需要传入的proirity的值大于100(同时要小于150)即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ionic  # 返回键退出  # 返回键  # 退出app  # ionic2.0双击返回键退出应用  # ionic监听android返回键实现“再按一次退出”功能  # 三步实现ionic3点击退出app程序  # ionic3双击返回退出应用的方法  # ionic+html5+API实现双击返回键退出应用  # 上个  # 你要  # 首页  # 的是  # 你只需要  # 则是  # 只会  # 重写  # 不符合  # 时要  # 大家多多  # 再按  # 而不是  # 应该是  # 是用来  # 导航页  # return  # title  # subTitle  # assertive 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  html如何与html链接_实现多个HTML页面互相链接【互相】  WordPress 子目录安装中正确处理脚本路径的完整指南  免费视频制作网站,更新又快又好的免费电影网站?  微信小程序 配置文件详细介绍  如何在Tomcat中配置并部署网站项目?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何在建站之星网店版论坛获取技术支持?  Android okhttputils现在进度显示实例代码  如何在香港服务器上快速搭建免备案网站?  公司网站制作价格怎么算,公司办个官网需要多少钱?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Laravel如何使用Telescope进行调试?(安装和使用教程)  Linux网络带宽限制_tc配置实践解析【教程】  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  如何用AWS免费套餐快速搭建高效网站?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  焦点电影公司作品,电影焦点结局是什么?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  Laravel怎么在Controller之外的地方验证数据  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何确认建站备案号应放置的具体位置?  个人网站制作流程图片大全,个人网站如何注销?  UC浏览器如何设置启动页 UC浏览器启动页设置方法  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  ,网页ppt怎么弄成自己的ppt?  简历在线制作网站免费版,如何创建个人简历?  如何在IIS7上新建站点并设置安全权限?  Laravel如何实现模型的全局作用域?(Global Scope示例)  大学网站设计制作软件有哪些,如何将网站制作成自己app?  如何获取PHP WAP自助建站系统源码?  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  PHP正则匹配日期和时间(时间戳转换)的实例代码  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  JavaScript常见的五种数组去重的方式  制作旅游网站html,怎样注册旅游网站?  如何在阿里云ECS服务器部署织梦CMS网站?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  使用C语言编写圣诞表白程序  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Swift中循环语句中的转移语句 break 和 continue  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  利用JavaScript实现拖拽改变元素大小  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  微信推文制作网站有哪些,怎么做微信推文,急?