小米開原始檔管理器MiCodeFileExplorer-原始碼研究(2)-2個單例項工具類

小雷FansUnion發表於2015-10-28
從本篇開始,講解net.micode.fileexplorer.util工具包中的類。
這個包下的類,功能也比較單一和獨立。很多程式碼的思想和實現,可以用於JavaWeb和Android等多種環境中。


一、單例項活動管理器ActivitiesManager
一個單例項的活動管理器,從方法的被呼叫程度來看,“徒有其名”。
registerActivity註冊活動方法被使用了,而getActivity沒有被使用,感覺明顯有問題啊~
我目前的猜測:
大概是檢視檔案的時候,就會新建立一個活動,並且註冊儲存起來。
然後在需要的時候,使用getActivity獲得,再做後續處理。
但是,getActivity方法壓根沒有被使用。


我猜測:“社群開源版”是被閹割了,程式碼是經過裁剪的?


package net.micode.fileexplorer.util;


import java.util.HashMap;


import android.app.Activity;
/**單例項活動管理器*/
public class ActivitiesManager {
    public static final String ACTIVITY_FILE_VIEW = "FileView";
    //@Deprecated沒有被任何其他類使用
    public static final String ACTIVITY_FILE_CATEGORY = "FileCategory";
    //@Deprecated沒有被任何其他類使用
    public static final String ACTIVITY_TAB = "FileExplorerTab";


    private static ActivitiesManager instance;


    private HashMap<String, Activity> activities = new HashMap<String, Activity>();


    private ActivitiesManager() {
    }


    // return true indicates successful, false indicates the name exists
    //根本沒有返回值,難道說“社群開源版”是被閹割的麼?
    //被FileViewActivity使用了,大概是檢視檔案的時候,就會新建立一個活動
    public void registerActivity(String name, Activity a) {
        activities.put(name, a);
    }


    //@Deprecated沒有被任何其他類使用
    public Activity getActivity(String name) {
        return activities.get(name);
    }


    public static ActivitiesManager getInstance() {
        if (instance == null)
            instance = new ActivitiesManager();
        return instance;
    }
}




二、單例項設定工具類Settings
就1個作用,儲存和檢視“是否顯示隱藏檔案和上級目錄”。
難道這個程式的設定或者說“首選項”太少了。


package net.micode.fileexplorer.util;
/**單例項設定工具類,儲存1個選項,是否顯示隱藏檔案和上級目錄“.”*/
public class Settings {
    // whether show system and cache images, default not
    private boolean mShowDotAndHiddenFiles;
    private static Settings mInstance;


    private Settings() {


    }


    public static Settings instance() {
        if(mInstance == null) {
            mInstance = new Settings();
        }
        return mInstance;
    }


    public boolean getShowDotAndHiddenFiles() {
        return mShowDotAndHiddenFiles;
    }


    public void setShowDotAndHiddenFiles(boolean s) {
        mShowDotAndHiddenFiles = s;
    }
}




三、關於單例項
   一個類,只建立一個例項。
   目前這2個類,都不是執行緒安全的。

相關文章