2011年对着书本Android应用开发揭秘,写了2个月的HelloWorld。
  现在想复习并深入,我没有耐心再去一点点地敲代码了。
  4年前自己是个学生,实习,现在有工作,只能业余时间研究。
  这一点是非常不同的。
  
  我希望通过研究别人的“成熟产品”,更好地全面学习。
  以目标为导向,具体来说,通过研究别人的一个产品,进而全面掌握,在研究的过程中,
把若干问题都解决了,从而达成“快速进步”的目标。
  我们学习Java,学习Android开发,不是为了玩玩而已,也不能紧紧是“感兴趣”,更重要的是
解决实际的问题。实际问题通常都是要研发一个完整的产品,至少也是解决某个问题的工具,比如
小米的开源文件管理器,下载源码,搞好Android环境,打包,安装到我的Coolpad手机上,就可以用了。
它能够解决Android手机上的文件管理问题。
  我对这个开源产品的评价是9/10,不足之处是,文档太少了,没啥说明。
  在成功打包运行,看到了界面和功能后,我非常喜欢,界面还可以,功能也是完整的。
  这种开源项目,我最喜欢了,完全是“成型产品”,“半吊子”的开源产品,研究起来比较折磨人,各种问题。
  
  看了看Github和官方社区,也不怎么活跃了。
  
  官方社区: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

小米开源文件管理器MiCodeFileExplorer-源码研究(0)-初步研究的更多相关文章

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

    上篇说到,把小米的Java代码整理成了5个包,其中1个是net.micode.fileexplorer.model.这个包就2个模型类,最基本了,FileInfo和FavoriteItem. pack ...

  2. 小米开源文件管理器MiCodeFileExplorer-源码研究(5)-AsyncTask异步任务

    说明:本文的文字和代码,主要来自于网上的2篇文章. 第4篇的时候,提到了异步任务AsyncTask. 网上找了2篇文章学习下,copy网友的代码,稍微改了几个字,运行成功了. 在开发Android移动 ...

  3. 开源播放器ijkplayer源码结构

    ijkplayer核心源码主要在ijkmedia文件夹下ijkplayer.ijksdl及ijkutils. 注:tag k0.3.1 player: remove ijkutil android相关 ...

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

    AndroidManifest.xml是Android应用程序最重要的配置文件. 入口文件和intent-filter <application android:icon="@draw ...

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

    接着之前的第4篇,本篇的2个类,仍然是工具类.MediaFile,媒体文件,定义了一大堆的常量,真正的有用的方法就几个.isAudioFileType.isVideoFileType之类的. Mime ...

  6. 小米开源文件管理器MiCodeFileExplorer-源码研究(2)-2个单实例工具类

    从本篇开始,讲解net.micode.fileexplorer.util工具包中的类.这个包下的类,功能也比较单一和独立.很多代码的思想和实现,可以用于JavaWeb和Android等多种环境中. 一 ...

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

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

  8. 小米开源文件管理器MiCodeFileExplorer-源码研究(8)-文件排序工具类FileSortHelper

    FileSortHelper的核心功能就是,对文件集合FileInfo排序.FileInfo有若干字段,根据字段定义了4种比较器Comparator.调用示例:Collections.sort(Lis ...

  9. 小米开源文件管理器MiCodeFileExplorer-源码研究(7)-Favorite收藏管理和SQLite数据库CRUD

    FavoriteDatabaseHelper,存储favorite数据,到SQLite数据库.SQLiteOpenHelper是一个帮助管理数据库和版本的工具类.通过继承并重载方法,快速实现了我们自己 ...

随机推荐

  1. BZOJ3511: 土地划分

    [传送门:BZOJ3511] 简要题意: 给出n个点,m条边,每个点有A和B两种形态,一开始1为A,n为B 给出VA[i]和VB[i],表示第i个点选择A和B形态的价值 每条边给出x,y,EA,EB, ...

  2. 1.Apache Axis配置文件WSDD详解

    转自:https://jyao.iteye.com/blog/1285516 1. Aapche Axis的Web Service Deployment Descriptor(WSDD)文件参考文档. ...

  3. LINQ查询基础

    一.什么是LINQ LINQ是Language Integrate Query的缩写,意为语言集成查询,是微软在.Net Framework 4.5版中推出的主要特性之一. 它为开发人员提供了统一的数 ...

  4. Function的一些结论与eval函数.

    1.1 函数的创建方式 1 函数声明 2 函数表达式 3 new Function // 1 function foo() {} // 2 var foo = function() {}; // 3 ...

  5. BZOJ 1305 二分+网络流

    思路: 建图我根本没有想到啊--. (我是不会告诉你我借鉴了一下题解的思路) 把每个人拆成喜欢的和不喜欢的点 男 喜欢 向 男 不喜欢 连 边权为k的边 如果男喜欢女 那么 男喜欢向 女喜欢 连 1 ...

  6. OpenGL编程逐步深入(一)创建一个窗口

    原文地址:http://ogldev.atspace.co.uk/ 原文中使用gnu make进行项目管理,本系列文章使用visual studio2012.在翻译过程中并非直译,加入了一些笔者个人观 ...

  7. Google Nexus 5x Android 7.0 Root

    很久没有写东西了,准备重新养成这个好习惯.因为自己一直在用Nexus,前段时间自己的Nexus5老的不行了,所以买了台5x,一直没时间root,今天有时间终于有时间弄一下. 在这里整理分享一下. 开始 ...

  8. 基于SIFT的点云关键点提取

    这篇博文主要介绍SIFT算法在提取点云图像关键点时的具体用法. 尺度不变特征转换(Scale-invariant feature transform,SIFT)是David Lowe在1999年发表, ...

  9. C2mini 摄像头添加 到 7832N 录像机方法

    1.在YS7.com 把2个设备全部添加 (录像机也可以通过手机添加) 2.在录像机里添加摄像头 注: 如出现 “未知错误”可能为录像机版本过低造成.

  10. Flex3中addEventListener()方法使用详解

    Flex控件对象.RemoteObject等都有一个共同的方法addEventListener. 方法详细信息: 来源于:flash.events.EventDispatcher类 addEventL ...