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

2011年对着书本Android应用开发揭秘,写了2个月的HelloWorld。

现在想复习并深入,我没有耐心再去一点点地敲代码了。

4年前自己是个学生,实习,现在有工作,只能业余时间研究。

这一点是非常不同的。

我希望通过研究别人的“成熟产品”,更好地全面学习。

以目标为导向,具体来说,通过研究别人的一个产品,进而全面掌握,在研究的过程中,

把若干问题都解决了,从而达成“快速进步”的目标。

我们学习Java,学习Android开发,不是为了玩玩而已,也不能紧紧是“感兴趣”,更重要的是

解决实际的问题。实际问题通常都是要研发一个完整的产品,至少也是解决某个问题的工具,比如

小米的开源文件管理器,下载源码,搞好Android环境,打包,安装到我的Coolpad手机上,就可以用了。

它能够解决Android手机上的文件管理问题。

我对这个开源产品的评价是9/10,不足之处是,文档太少了,没啥说明。

在成功打包运行,看到了界面和功能后,我非常喜欢,界面还可以,功能也是完整的。

这种开源项目,我最喜欢了,完全是“成型产品”,“半吊子”的开源产品,研究起来比较折磨人,各种问题。

看了看Github和官方社区,也不怎么活跃了。

Github项目地址:https://github.com/MiCode/FileExplorer

官方社区:http://www.micode.net

本地用Eclipse搞好环境,把Github上的代码搞进去。

我个人习惯用Android真机测试,速度非常快,从打包到运行,不超过10秒。如果用模拟器,至少要30秒,急死人啊~

Android源码,就2个包:

net.micode.fileexplorer 小米写的代码

org.swiftp:一个开源的ftp server,被整合到了小米源码中,可以这么理解

几十个Java源文件,都放在1个包里,好不习惯啊~

在初步读代码后,我优先整理了Java代码,分成了好几个包。

根目录net.micode.fileexplorer

1.顶级包

FileExplorerTabActivity等各种Activity界面入口文件,仍然保留在顶级包里。

2.impl

小米或Android定义的接口的实现类。

3.model

模型文件,实体文件,比如FileInfo.java用来表示一个Android物理文件。

这种代码,通常都是比较独立的。

4.ui

视图组件,是对Android组件的封装和补充。

和Activity不同的是,它们不是入口文件。

5.util

工具类,和模型类类似,它们也相对比较独立。

比如,FileOperationHelper.java就具体完成了文件的“增删改查”。

总的来说,就是把入口、界面、界面组件、模型、工具类等分离,使得你能很快地建立对项目的整体印象。

先整体,后局部。

要有全局思维,这是我对自己的要求~

一个常见的问题

Android打包之后,手机上显示“程序停止运行”,没有别的提示。

这种问题,通常都是程序出了问题,这个地方Eclipse不够友好,没有给出错误提示。

最后,通过debug模式,打断点,定位到了错误代码,然后增加了try-catch捕捉,最后定位到问题。

有的java文件,包的路径变了。

CategoryBar extends View,这个组件是1个界面类型的组件,在xml中有配置。

<net.micode.fileexplorer.ui.CategoryBar

android:id="@+id/category_bar" android:layout_width="fill_parent"

android:layout_height="35px" android:layout_gravity="center"

android:layout_marginBottom="5dip">

</net.micode.fileexplorer.ui.CategoryBar>

个人观点:如果只会Android,只做自己工作中的那点事,而不关心Java服务端等其他人的工作,

视野会比较狭窄。我心中的“大牛”,“经理人”,“技术负责人”一定是全局类型的人才。

我认为,全局类型的人才更加稀缺,全局类型的人才多是从专一类型的发展过来的。

从专一类型过渡到全局类型,我觉得更主要是“机遇”。

“机遇”可能是别人给的,如果别人给不了,自己应该通过努力而获得。

个人努力,需要意识和方向指引~

我是不会认可“努力比方向更重要”和“方向比努力更重要”这种片面的观点的~

小雷FansUnion-一个正在研究Android的程序员

2015年10月25日

湖北-武汉-循礼门

QQ:240370818

微信:FansUnion

我的主要博客:http://blog.csdn.net/FansUnion

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

时间: 2024-12-23 14:15:24

小米开源文件管理器MiCodeFileExplorer初步研究的相关文章

小米开源文件管理器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-源码研究(3)-2个单实例工具类

从本篇开始,讲解net.micode.fileexplorer.util工具包中的类.这个包下的类,功能也比较单一和独立.很多代码的思想和实现,可以用于JavaWeb和Android等多种环境中. 一.单实例活动管理器ActivitiesManager一个单实例的活动管理器,从方法的被调用程度来看,"徒有其名".registerActivity注册活动方法被使用了,而getActivity没有被使用,感觉明显有问题啊~我目前的猜测:大概是查看文件的时候,就会新建立一个活动,并且注册保存

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

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

小米开源文件管理器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-源码研究(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

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

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

小米开源便签Notes-源码研究(0)-整体功能介绍(图文并茂)

本周对小米开源文件管理器,做了整体的研究,大致弄清了源码的来龙去脉,剩下的就是重点研究几个活动的流程了. 讲解Android应用这种可视化的程序,感觉还是有图比较好,不然功能界面都不清楚,自己不好介绍,读者也摸不着头脑.    从今天开始,小雷哥哥要开始研究,小米开源便签Notes了.    这次要改进一下模式:不但要整体介绍功能,还要对着图,图文并茂介绍,才清清楚楚~    为此,我手机逐个截图,然后保存到电脑,然后再上传~    为了保证文章的效果,也真是不嫌麻烦~    1.应用入口   

小米开源便签Notes-源码研究(2)-定时提醒的便签

本篇讲述小米便签中的定时提醒功能.  便签,可以理解为一件事情,一项任务,有个定时提醒的功能,还是蛮不错的~    小米便签定时功能,是当编辑便签的时候,有个菜单项,选了之后,就弹出一个"日期对话框",选择了日期,就设置了定时功能. 下面讲解技术实现的整体思路(很多地方我也不懂,不懂的就搜索):    AndroidManifest.xml配置 <receiver android:name=".ui.AlarmInitReceiver" > <in

修改后的小米文件管理器(去掉远程管理)

最近项目要用到文件管理,就找来小米的开源文件管理代码,删掉了远程管理代码,只有文件管理. 效果图如下: 源码下载地址:http://download.csdn.net/detail/lowprofile_coding/7524729