zoukankan      html  css  js  c++  java
  • 小米开源文件管理器MiCodeFileExplorer-源码研究(0)-初步研究

    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
  • 相关阅读:
    防止sql注入的方法
    二叉树的LCA(最近公共祖先)算法
    二叉树的计算
    @RestController和@Controller注解的区别
    单调栈与单调队列
    java中删除list指定元素遇到的问题
    随机打乱数组
    Mysql基本操作
    二叉树的构建
    synchronized修饰方法和对象的区别
  • 原文地址:https://www.cnblogs.com/qitian1/p/6462660.html
Copyright © 2011-2022 走看看