求助:如何在双击返回键退出App后关闭Toast提示?
解决双击返回退出App后Toast仍显示的问题
嘿,这个小坑我之前踩过!核心原因其实是Toast属于系统级别的提示组件,哪怕你的App进程已经被销毁,它还是会按照设定的时长继续显示。不过咱们只需要对现有代码做几个简单改动就能搞定:
方案:复用Toast实例并主动取消
首先,在你的Activity类中声明一个全局的Toast成员变量,用来保存退出提示的Toast实例:
private Toast exitToast;
然后修改onBackPressed()方法,在退出前主动取消Toast,同时复用实例避免重复创建:
@Override public void onBackPressed() { long currentTime = System.currentTimeMillis(); if (back_pressed + 2000 > currentTime) { // 双击退出时,先取消正在显示的Toast if (exitToast != null) { exitToast.cancel(); } super.onBackPressed(); } else { // 复用Toast实例,避免重复创建 if (exitToast == null) { exitToast = Toast.makeText(getBaseContext(), "Нажмите еще раз для выхода", Toast.LENGTH_SHORT); } else { // 更新文本和时长,防止复用旧状态 exitToast.setText("Нажмите еще раз для выхода"); exitToast.setDuration(Toast.LENGTH_SHORT); } exitToast.show(); } back_pressed = currentTime; }
为什么这个方案有效?
- 当用户触发双击退出时,我们调用
exitToast.cancel()直接终止Toast的显示,系统就不会再继续展示这个提示了。 - 复用Toast实例不仅能解决当前问题,还能避免频繁创建Toast带来的性能损耗,同时防止多次点击时出现多个Toast叠加的情况。
内容的提问来源于stack exchange,提问作者Bitlejuce Do
相关产品推荐
相关产品推荐

