zoukankan      html  css  js  c++  java
  • 重复弹Toast的解决方案

    测试提单子了, 说重复的错误操作导致不停的弹出提示框,  返回之后还是照样弹.!

    android是这样的机制, 我跟了下Toast的源代码.  Toast是用INotificationManager去做的.


    修改源码工作量太大,而且我们是基于SDK做的APK, 所以我决定去找下根源.

    原因是:  同事每回都用Toast.makeToast.  然而这个方法中每次都会去new 一个Toast对象,这些Toast对象就会放到 INotificationManager的enqueue队列里面去顺序执行.

    如果想在按返回键时立即不弹Toast, 那么方法只有一个, 就是定义一个全局的成员变量Toast, 这个Toast不为null的时候才去make,否则直接setText.

    最后重写父类Activity的onBackPressed()方法里面去cancel你的Toast即可

    大致代码如下:

    1. private Toast mToast;  
    2.   
    3. public void showToast(String text) {  
    4.     if(mToast == null) {  
    5.         mToast = Toast.makeText(context, text, Toast.LENGTH_SHORT);  
    6.     } else {  
    7.         toast.setText(text);        toast.setDuration(Toast.LENGTH_SHORT);  
    8.     }  
    9.     mToast.show();  
    10. }  
    11.   
    12. public void cancelToast() {  
    13.         if (mToast != null) {  
    14.             mToast.cancel();  
    15.         }  
    16.     }  
    17.   
    18. public void onBackPressed() {  
    19.         cancelToast();  
    20.         super.onBackPressed();  
    21.     } 
  • 相关阅读:
    asp Excel导入数据库
    Excel导出函数
    asp精简checkbox全选代码
    一个操作读写已存在excel 文件的例子
    asp中实现网络打印功能
    asp操作excel 技术总结
    asp初学者常用的代码
    asp连接各种其他数据库 的方法
    asp得到地址栏里"?"以后的字串
    asp判断今天是星期几
  • 原文地址:https://www.cnblogs.com/tt_mc/p/2579036.html
Copyright © 2011-2022 走看看