安卓提示toast,避免相同信息重复弹出

安卓开发过程中,提示肯定会用到。恰当的提示时方便让用户知道他们当前所做的动作产生的结果,好的提示自然是能够提升用户体验,但是过度提示就会让应用的用户体验变得糟糕。

就是这样一个情景,当用户连续操作某一个相同动作时,不至于相同的信息连续不断的提示。但是又不至于在用户操作之后不弹出提示。所以针对这样的需求,简单的做了如下的一个类,专门用作提示。

1.需求:

     相同的提示,只会弹一个。不同的提示会连续的弹出。

2.实现:

    采用系统的toast,根据消息控制是否弹出。

3.代码:

    a)代码实现:

       

    /** Data */
    private String mTempStr = "";
    private Toast toast = null;
    public static GToast i;

    /*********************************/
    public static GToast getInsance(){
        if(i == null)
            i = new GToast();
        return i;
    }

    private GToast(){}

    public void show(String text){
        if(toast == null){
            mTempStr = text;
            toast = Toast.makeText(MApplication.gContext, text, Toast.LENGTH_SHORT);
        }else{
            if(mTempStr.equals(text)){
                mTempStr = "";
                return ;
            }
            toast.cancel();
            toast = Toast.makeText(MApplication.gContext, text, Toast.LENGTH_SHORT);
            mTempStr = text;
        }
        toast.show();
    }

     当然这样的一个静态实例类就已经可以调用。但是为了调用更加方便,这里做了个简单的封装(其实就是使用一个i替代了getInstance()),

     调用如下:

GToast.i.show("this is a test");
   

    b)因为这是一个静态单例,在应用的生命周期中都可能存在,所以所持有的上下文是ApplicationContext。

      这里对这个静态单利初始化放在了Application中(避免内存溢出的好习惯,其实全局的,静态的单例都应该放在Application中,不然就会导致Activity不能被销毁掉,内存溢出)。

  4) 源码如下:

          https://github.com/wzp09tjlg/GToast.git


     

你可能感兴趣的:(Android)