zoukankan      html  css  js  c++  java
  • 小米开源文件管理器MiCodeFileExplorer-源码研究(2)-2个单实例工具类

    从本篇开始,讲解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个类,都不是线程安全的。
  • 相关阅读:
    MongoDB
    Mac下将Python2.7改为Python3
    Kafka
    Server 基础概念 备忘
    应用内支付
    Sign in with apple
    Linux三剑客grep/sed/awk
    React-Native中使用到的一些JS特性
    Date Picker控件:
    Picker View控件:
  • 原文地址:https://www.cnblogs.com/qitian1/p/6462647.html
Copyright © 2011-2022 走看看