Android 12对“返回”按钮的处理带来的问题

在Android 12之前,按下“返回”按钮,会执行当前Activity的finish()方法。如果是在启动器Activity中按下“返回”按钮,则是结束App的运行。
Android 12改变了这一行为,具体见https://developer.android.google.cn/about/versions/12/behavior-changes-all?hl=zh-cn#activity-lifecycle

对于大多数应用而言,此变更意味着使用“返回”按钮退出应用的用户可以更快地从温状态恢复应用,而不必从冷状态完全重启应用。

这会使App再次运行时保持上次退出的状态,好还是不好,见仁见智。但像我这种非专业开发人员,平时并不关注Android的版本更新,就被坑了一回。

最近写了一个App,里面有一个前台服务。之前的设备都是Android 12以下的版本,运行时没发现问题。

然后在Android 12的终端上测试时,出了一个问题。

启动App后,前台服务运行,在通知栏上显示图标。这时候按下“返回”按钮,App退出。然后再按通知栏上的图标,唤醒App界面,再按“返回”按钮,就会发现App没有退出,而是显示上次退出时的界面,再按一下“返回”按钮“,界面才会消失。

查看日志,发现没有执行Activity的onDestroy()方法,确定是窗体没有被销毁引起的问题,但是想不出原因啊!

简直莫明其妙,头都大了。

百思不得其解,百度也找不到答案。后来想想,只有Android 12才有这个问题(手上的设备,Android最高版本就是12),然后才找到上面链接里的文档。在onKeyUp事件里加了个finish()方法解决了这个问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值