Android雙擊退出及bug的解決辦法

Android雙擊退出及bug的解決辦法


雙擊退出


最近在做項目的時候在主MainActivity加了個雙擊退出的功能。
關鍵代碼片段如下:

    long currentTime = 0;
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
            if(System.currentTimeMillis() - currentTime >2000){
                Toast.makeText(this,"再按一次退出程序",Toast.LENGTH_SHORT).show();
                currentTime = System.currentTimeMillis();
            }else{
                MyApplication. getInstance().exit();
                finish();
            }
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

bug描述


這段代碼本身是沒有bug的,當我們沒有其他跳轉操作時是可以正常退出的,可是當我們從主頁跳到其他activity再跳回來的時候會發現雙擊退出只是finish掉了當前activity,然後顯示堆棧中處於此activity下面的activity,這樣顯然不是我們想要的結果,所以我們要對這種情況進行一次處理。

bug解決辦法


bug解決辦法(一)

這也是最簡單的一種,在每次從其他頁面跳轉到主activity時將跳轉前的頁面銷燬掉,直接在跳轉完成後調用:

onDestroy();

bug解決辦法(二)

在Application中將模式設置成只能放置一個activity:
加入如下代碼:

    //單例模式中獲取唯一的MyApplication實例
    public static MyApplication getInstance()
    {
        if(null == instance)
        {
            instance = new MyApplication();
        }
        return instance;
    }
    //添加Activity到容器中
    public void addActivity(Activity activity)
    {
        activityList.add(activity);
    }
    //遍歷所有Activity並finish
    public void exit()
    {
        for(Activity activity:activityList)
        {
            activity.finish();
        }
        System.exit(0);
    }

– 以上,如有疑問或建議歡迎討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章