日常用到Taost的机会很多,用就大家都会用,但是直接使用时,频繁点击Toast就会频繁出现,点击多少次就出现多少次,如果你不在页面的生命周期相应位置cancel掉Toast的话,即使退出了页面也是会继续弹出,非常烦人,也会显示出你的水平低下。

优化Toast的核心原理是,当生成一个Toast还没消失时,重复点击同样的一样Toast,不会再生成。下面来代码

public class ToastHelper {
public static Toast mToast = null;
/**
* 弹出Toast
* @param context 上下文对象
* @param text 提示的文本
* @param duration 持续时间(0:短;1:长)
*/
public static void showToast(Context context, String text, int duration) {
if (mToast == null) {
mToast = Toast.makeText(context, text, duration);
} else {
mToast.setText(text);
mToast.setDuration(duration);
}
mToast.show();
}
/**
*
* 弹出Toast
* @param context 上下文对象
* @param text 提示的文本
* @param duration 持续时间(0:短;1:长)
* @param gravity 位置(Gravity.CENTER;Gravity.TOP;...)
*/
public static void showToast(Context context, String text, int duration,int gravity) {
if (mToast == null) {
mToast = Toast.makeText(context, text, duration);
} else {
mToast.setText(text);
mToast.setDuration(duration);
}
mToast.setGravity(gravity, 0, 0);
mToast.show();
}
/**
* 关闭Toast
*/
public static void cancelToast(){
if(mToast !=null){
mToast.cancel();
}
}
}

下载时使用规则

 ToastHelper.showToast(this, "您的输入为空!",0);//1是长,0是短

另外在Activity的生命周期内还可以根据需求优化一下,退出本页面时Toast被cancel掉

@Override
protected void onDestroy() {
super.onDestroy();
ToastHelper.cancelToast();
}

Toast优化,解决频繁点击多次出现的更多相关文章

  1. ASP.NET 多次点击button后事件执行多次 并发解决 频繁操作解决办法

    首先让我们体验一下频繁操作: 1)打开项目,在后台aspx.cs等服务器页面,设置断点. 2)点击页面按钮 3)调试开始进入断点,然后重复点击页面按钮 4)服务器第一次事件已经处理完毕,调试再次进入了 ...

  2. 如何修改VPN连接的MTU,解决频繁断线和页面打不开的问题

    如何修改VPN连接的MTU,解决频繁断线和页面打不开的问题 MTU 介绍:MTU 即最大传输单元,它是指一种通信协议的某一层上面所能通过的最大数据包大小.为什么需要修改 MTU大多数设备原本支持通过 ...

  3. js 防止button频繁点击

    <input type="button" class="test" title="Select" value="Select ...

  4. Android内存优化解决 资料和总结的经验分享

    在前公司做一个图片处理的应用时, 项目交付的时候,客户的手机在运行应用的时候,一直在崩溃,而这个异常就是OutOfMemory的错误,简称为OOM, 搞得我们也是极其的崩溃,最后 ,我们是通过网上搜集 ...

  5. 自定义Toast解决快速点击时重复弹出,排队无止尽

    解决办法:自定义MyToast类: public class MyToast { /** 之前显示的内容 */ private static String oldMsg ; /** Toast对象 * ...

  6. android 解决ListView点击与滑动事件冲突

    如果你的ListView的Item有滑动功能,但又点击Item跳转到其它activity,这样若是在Adapter里面写点击事件是会导致滑动事件获取不到焦点而失效: 解决方法:不要在adapter里面 ...

  7. android 该项目的优化toast优化技巧

    我们这样做的时候经常登录认证使用toast提示用户输入出现错误等..很多人都直接使用 Toast.makeText(LoginActivity.this, "请联系小区的物业管理" ...

  8. 记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案(转)

    问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...

  9. 执行计划中Using filesort,Using temporary相关语句的优化解决

    昨天听开发人员提到,相关的彩票网页当中一个页面刷新的很慢,特别是在提取数据的时候,今天早上一到,便去找开发人员要去相关的也没进行浏览,窥探哪些数据出现了问题,开发人员使用PHP开发,所以我用IE很容易 ...

随机推荐

  1. vue2.x和vue1.0

    1.首先挂载方式上 在vue2.0中,如果使用body或者html作为挂载点,则会报以下警告: Do not mount Vue to <html> or <body> - m ...

  2. AngularJS实战之ng-repeat的详细用法

    一.基本语法 {{$index}}:获取元素的下标. {{$first}}:判断当前元素是否是第一个元素,是则为true,否则:false: {{$last}}:判断当前元素是否是最后一个元素,是则为 ...

  3. 【慕课网实战】Spark Streaming实时流处理项目实战笔记三之铭文升级版

    铭文一级: Flume概述Flume is a distributed, reliable, and available service for efficiently collecting(收集), ...

  4. linux下运算的几种方法

    1.expr 1.1 最简单的用法 yan@yan:~$ \* yan@yan:~$ 1.2 bash脚本对于expr yan@yan:~$ cat expr1.sh #!/bin/bash PATH ...

  5. C#-VS程序集

    程序集即代码组,可以是单个文件或多个文件,按一个整体部署,但可指定自身调用其他程序集的版本. 推出原因 为解决dll地狱而推出,也可解决其他问题.dll地狱,a应用使用dll版本1,b应用使用dll版 ...

  6. _编程语言_C++_setw()

    C++ 中使用setw(int n) 来控制输出间隔. 例如: cout<<)<<'a'<<endl;//s与a之间有7个空格,setw()只对后面紧跟的输出产生作 ...

  7. 6609 - Minimal Subarray Length

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  8. 关于cmp函数参数中的&符号

    关于cmp函数参数中的&符号 关于sort函数中的cmp函数有着不同的写法,以刚刚的整形元素比较为例 还有人是这么写的: bool cmp(const int &a, const in ...

  9. js五星评分

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  10. ubuntu16.04 LTS把下载源改为阿里云的源

    为什么要切换下载源到国内的源上? Ubuntu的中国服务器下载速度很慢,我们可以尝试修改软件更新源,这样下载和更新软件的速度会加快很多. 一.linux系统版本: ubuntukylin-16.04- ...