小米开源文件管理器MiCodeFileExplorer-源码研究(3)-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个类,都不是线程安全的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-09 06:35:30

小米开源文件管理器MiCodeFileExplorer-源码研究(3)-2个单实例工具类的相关文章

小米开源文件管理器MiCodeFileExplorer初步研究

2011年对着书本Android应用开发揭秘,写了2个月的HelloWorld. 现在想复习并深入,我没有耐心再去一点点地敲代码了. 4年前自己是个学生,实习,现在有工作,只能业余时间研究. 这一点是非常不同的. 我希望通过研究别人的"成熟产品",更好地全面学习. 以目标为导向,具体来说,通过研究别人的一个产品,进而全面掌握,在研究的过程中, 把若干问题都解决了,从而达成"快速进步"的目标. 我们学习Java,学习Android开发,不是为了玩玩而已,也不能紧紧是&

小米开源文件管理器MiCodeFileExplorer-源码研究(1)-2个模型Model

上篇说到,把小米的Java代码整理成了5个包,其中1个是net.micode.fileexplorer.model.这个包就2个模型类,最基本了,FileInfo和FavoriteItem. package net.micode.fileexplorer.model; /** 抽象了一个文件最基本的信息 */ public class FileInfo { // 文件名 public String fileName; // 文件路径 public String filePath; // 文件大小

小米开源文件管理器MiCodeFileExplorer-源码研究(6)-媒体文件MediaFile和文件类型MimeUtils

接着之前的第4篇,本篇的2个类,仍然是工具类.MediaFile,媒体文件,定义了一大堆的常量,真正的有用的方法就几个.isAudioFileType.isVideoFileType之类的. MimeUtils,文件类型工具类,定义了一大堆的   add("application/zip", "zip");   某种扩展格式,对应的mime类型.   通过阅读代码观察到的2点现象,我有2点猜测:现象1.注释是英文的,很溜的那种~2.好多方法没有被本项目使用.  Ct

小米开源文件管理器MiCodeFileExplorer-源码研究(3)-使用最多的工具类Util

Util.java,使用最广泛~代码中很多地方,都写了注释说明~基本不需要怎么解释了~ package net.micode.fileexplorer.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.i

Centos下源码安装MySQL5.5(单实例)

1.介质准备 注:由于Mysql5.5源码编译采用的CMAKE方式,所以事先下载cmake的安装包和MySQL5.5的安装包 下载地址如下: http://mysql.mirror.kangaroot.net/Downloads/MySQL-5.5/ http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz 下载完成之后上传到指定的服务器上. 2.安装依赖包 需要安装的依赖包很多,所以建议采用yum源安装的方式安装,其实有很多包是选装的.(加粗字

Redis java客户端 jedis 源码分析系列二:单实例 jedis

在使用Jedis的过程中最简单的用法就是单实例单连接的jedis,如下代码所示: public void testJedis(){ Jedis jedis = new Jedis("127.0.0.1"); jedis.set("key", "value"); jedis.get("key"); jedis.close(); } 让我们深入到内部去看一看其结构,如下图所示: 此处请先忽略 JedisPool 类和 Pool&l

小米开源文件管理器MiCodeFileExplorer-源码研究(9)-入口分析

AndroidManifest.xml是Android应用程序最重要的配置文件. 入口文件和intent-filter <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.Holo.Light" android:uiOptions="splitActionBar

小米开源文件管理器MiCodeFileExplorer-源码研究(4)-文件操作工具类FileOperationHelper

文件操作是非常通用的,注释都写在源代码中了,不多说~需要特别说明的是,任务的异步执行和IOperationProgressListener.拷贝和删除等操作,是比较费时的,采用了异步执行的方式~ Android异步执行,我也是初次了解,在CSDN上找了一篇文章,后续写个单独的例子,单独写1篇介绍.http://blog.csdn.net/xufenghappy6/article/details/7343899异步执行+事件通知 是一种比较流行的模式,比同步等待很多时候要好. 另外,特别需要说明的

Android开源项目 Universal imageloader 源码研究之项目框架

Universal imageloader 的代码并不复杂 重点是缓存,线程池任务 下面都用UML图进行了绘制 基本使用流程就是 初始化配置,设置Options参数,最后Dispaly提交下载 public static void initImageLoader(Context context) { ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context); config.thr