微信小程序:如何用代码退出小程序

itlao6 原创 开发&源码 微信小程序评论929字数 1067阅读3分33秒阅读模式

在Android开发时,我们可以使用finish()或者结束进程等手段达到退出app的效果,但是,微信小程序则没有提供退出小程序的api,必须用户点击系统返回键或者点击顶部小程序固定的的退出按钮...

那么,有什么办法来实现退出小程序的功能呢?
虽然微信没有提供退出小程序的api,但是有一个api是wx.navigateBack(),这个可以返回前一个页面或者前n个页面(指定参数delta)
那么,我们开始第一次尝试,当前处于首页时,返回前一个页面,理论上会退出app,我们在首页增加按钮点击事件,并在wxml中进行按钮绑定:文章源自IT老刘-https://wp.itlao6.com/490.html

  btnClick: function () {
    wx.navigateBack({
      delta: 1
    })
  },

上一猜想理论上是可行的,然而,实际操作时,却无法达到效果,当处于首页时navigateBack无法继续后退,故达不到退出小程序的目的。文章源自IT老刘-https://wp.itlao6.com/490.html

 文章源自IT老刘-https://wp.itlao6.com/490.html

微信小程序:如何用代码退出小程序
image.png

 文章源自IT老刘-https://wp.itlao6.com/490.html

上图可以看到,在首页每次点击触发navigateBack,起到的作用只是回调onShow()文章源自IT老刘-https://wp.itlao6.com/490.html

那究竟如何才能退出小程序呢?文章源自IT老刘-https://wp.itlao6.com/490.html

一、首页index.js如何返回

在一次偶然的尝试中,我找到了一种方法。同样是利用navigateBack,但是做了一些修改,在首页中修改btnClick()文章源自IT老刘-https://wp.itlao6.com/490.html

  btnClick: function () {
    wx.navigateTo({
      url: '..index?finish=true'
    })
  },

然后在onLoad()回调中文章源自IT老刘-https://wp.itlao6.com/490.html

  onLoad: function (options) {
    if(options.finish) {
      wx.navigateBack({
        delta: 1
      })
    }
  },

注意事项:文章源自IT老刘-https://wp.itlao6.com/490.html

  1. 上一方法,仅支持在首页中使用,进入二级页面后无法使用。
  2. 短时间内重新进入,会发现已经存在两个页面,这是因为使用了navigateTo跳转的缘故。(这个问题以后再看看如何解决,有好的解决方案的朋友也可以提出,多谢了!)
二、子页面如何返回

处于首页时,可以退出了,那么子页面呢?
这里可以分两步走:先使用wx.reLaunch({url: 'index',})返回首页,然后再在首页退出小程序。
这里肯定有很多小伙伴会想到使用reLaunch直接退出小程序(如下代码)文章源自IT老刘-https://wp.itlao6.com/490.html

    wx.reLaunch({
      url: '../logs/logs?finish=true',
    })

但是,实际测试时发现达不到预想的效果。文章源自IT老刘-https://wp.itlao6.com/490.html

ps: 以上方法在真机上亲测可行,不过这个算是利用了小程序的漏洞,小程序api是不支持退出功能的,这样间接实现的退出功能,不清楚是否后续版本会修复该问题
如果你们有什么更好的方式,欢迎提出!文章源自IT老刘-https://wp.itlao6.com/490.html

文章源自IT老刘-https://wp.itlao6.com/490.html文章源自IT老刘-https://wp.itlao6.com/490.html
继续阅读
weinxin
我的微信公众号
微信扫一扫关注公众号,不定时更新
itlao6
  • 本文由 发表于 2018年 7月 3日 16:19:22
  • 转载请务必保留本文链接:https://wp.itlao6.com/490.html
评论  0  访客  0
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定