安卓提示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


     

發佈了20 篇原創文章 · 獲贊 8 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章