Android开发总结
出来工作半年多了,没啥好交代的,就说说自己半年来的Android开发经历。
1.IDE
这半年来,从Eclipse到Android Studio,经历了两个IDE,在这里做一下简单的评价。
如果真要说,Android Studio是基本上大胜Eclipse的,至少Android Studio不会像Eclipse那样卡,公司配的电脑是渣了点,64位,win7,只有4G内存,跑Eclipse跑久了简直就是噩梦。
Android Studio的智能提示比Eclipse强多了,快捷键也很强大。至于工程的组织结构,Android Studio和Eclipse的差距还是很大的,但习惯了也不觉得有啥,哪种都行。
Android Studio有个不好的地方就是无法在同一个窗口显示多个工程,所以只能多开一个。。。
Android Studio采用Gradle构建,一开始的构建简直是丧心病狂。。。如果没有VPN,想都不敢想。。。构建上,Eclipse是比Android Studio快,但Android Studio导第三方库很方便,写一个Gradle脚本就行,并且配置上更加灵活。可以这样说:Eclipse是帮我们搭好了房子,我们只要熟悉它就行,而Android Studio是让我们用工具去搭建自己喜欢的房子。
更加重要的是,aar包只能由Android Studio构建,而谷歌现在推崇的方式就是aar包,所以以后开源的项目很有可能都是打成aar包,并且基本上,大部分的开源项目已经是采用Gradle构建。。。
Android Studio一个不好的地方就是升级太快,在半年的 时间内,我从0.8.1升级到1.0。。。可恶的是,每次升级,Gradle也升级,并且还断代。。。虽然么官方现在是版本稳定了,因为IDEA已经出了新版本了,但我试过1.0出事了,直接撤回0.9.4。。。
总体而言,未来Android开发一定是用Android Studio或者IDEA,Eclipse已经被官方抛弃了。。。
2.版本控制工具
我使用SVN比较少,刚工作的时候,刚好就是把SVN换成Git,但对于Git的使用方式也经历了一番变化。
一开始使用Git,就像SVN一样,一个master分支,大家都往上面推,一旦出事了,大家都卡住了。。。后来使用SourceTree做管理,分支切换,提交和解决冲突好多了。现在的开发模式是这样的:
master分支是正式分支,在没确保稳定之前是不会推东西上去的,dev分支是开发分支,而每个人本地也有一个dev分支,大家可以根据自己的需求在本地开多几个分支,这样就不会出现master分支无法发布的现象,因为master分支永远是正确的。
遗憾的是,由于使用的是工具,对命令行还是不熟悉。。。
3.数据库
数据库一开始采用的是原生,编写了一大堆Helper,而且光是存表,就已经写了很多代码,一个一个set进去。。。后来换成对象数据库LitePal,好多了,但LitePal本身的效率是原生的三分之一,但基本的情况已经足够了。。。不过,必须直视的是,LitePal的功能支持还不够完善,一开始不支持索引,后来的版本才支持,并且很多情况下,采用Sql语句都比使用LitePal的接口方法方便多了,LitePal的查找数据竟然是根据那个自增长的id。。。。只要稍微改一下,LitePal还是很好用的,尤其是对象一建好,表就建好了,特别方便,还有就是数据库的升级也非常方便。
有个不好的地方就是,可以直接操作表对象,这样很可能就会将不想存的数据存进表里,于是就封装了一下,不能直接操作表对象,而是操作实体对象,数据库的操作都是通过实体对象的接口方法,而接口方法调用的就是表对象的方法。
4.网络库和异步库
这部分的工作并不是我做的,但还是可以说一下。
一开始是自己封装的网络库,但封装得太复杂了,很难维护,而且它不是一个简单的网络库,是一个网络异步和本地异步一起实现的库,基于大量的回调,使用起来也是不错的。
后来换成Volley,不过就发现Volley的实现不太满足我们的要求,就用OkHttp将Volley的底层改掉,然后上层的接口形式采用链式调用的方式,代码的形式更加简单。
原生的异步AsnyTask简直就是个坑,它就是一个任务队列,多个任务执行并不是并发的,有可能就卡在其中一个出不来了。。。试过debug的时候跳进去就跳不出来了。。。后来就自己写了一个,也是采用链式调用的接口形式。
5.事件
采用EventBus作为事件管理,简直就是爽。简简单单就可以跨线程,跨组件通信,很多以前要很复杂才能实现的功能一下子就可以实现了。
6.UI
UI上,倒是很难讲的一个方面,采用ButterKnife减少了工作量,并且基本上采用组件思想,能够提炼出组件的就变成组件,方便替换,而且形式上,偏近于MVVM的形式,可以针对业务逻辑编写单元测试,原因就是逻辑业务都在ViewModel上。
大体笼统的就是这几个方面,后面有时间会针对具体的方面进行阐述。
Android开发总结的更多相关文章
- Android学习探索之Java 8 在Android 开发中的应用
前言: Java 8推出已经将近2年多了,引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时减化了各种设计模式的实现方式,是Java有史以来最重要的更新.但是Android上, ...
- Android 开发一定要看的15个实战项目
前言: 虽说网上有太多的Android课程,但是大多都是视频,有Android在线开发环境的几乎没有,但是对于学习Android的人来说拥有在线的Android开发环境是非常好的,可以随时动手操作学习 ...
- Android开发学习之路-关于Exception
Exception在Java中是表示异常的一个类.它是Throwable的子类. 而Exception的子类RuntimeException是一个特殊的异常类,在代码中不需要对此类进行throw,而是 ...
- Android开发学习之路-Android中使用RxJava
RxJava的核心内容很简单,就是进行异步操作.类似于Handler和AsyncTask的功能,但是在代码结构上不同. RxJava使用了观察者模式和建造者模式中的链式调用(类似于C#的LINQ). ...
- Android开发学习之路-记一次CSDN公开课
今天的CSDN公开课Android事件处理重难点快速掌握中老师讲到一个概念我觉得不正确. 原话是这样的:点击事件可以通过事件监听和回调两种方法实现. 我一听到之后我的表情是这样的: 这跟我学的看的都不 ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
- Android开发-之监听button点击事件
一.实现button点击事件的方法 实现button点击事件的监听方法有很多种,这里总结了常用的四种方法: 1.匿名内部类 2.外部类(独立类) 3.实现OnClickListener接口 4.添加X ...
- Android 开发环境在 Windows7 下的部署安装
Android SDK Android SDK 为 Android 应用的开发.测试和调试提了必要的API库和开发工具. ADT Bundle 下载 如果你是一个android 开发新手,推荐你下载使 ...
- Android开发之自定义的ListView(UITableViewController)
Android开发中的ListView, 顾名方法思义,就是表视图.表示图在iOS开发中就是TableView.两者虽然名称不一样,但是其使用方法,使用场景以及该控件的功能都极为相似,都是用来展示大量 ...
- Android开发之自定义组件和接口回调
说到自定义控件不得不提的就是接口回调,在Android开发中接口回调用的还是蛮多的.在这篇博客开始的时候呢,我想聊一下iOS的自定义控件.在iOS中自定义控件的思路是继承自UIView, 在UIVie ...
随机推荐
- 使用Gulp和Browserify创建多个绑定文件
Browserify是一个Javascript的绑定工具,帮助我们理顺module之间的依赖关系.Gulp用来优化workflow.两者的共同点都是使用流,但在使用流方面也有不同之处: Browser ...
- Java中long和Long有什么区别 (转载)
“Long is a class. long is a primitive. That means Long can be null, where long can't. Long can go an ...
- Java 7 jstat – JVM Statistics Monitoring Tool【翻译】
原文地址:Java 7 jstat 本文内容 语法 参数 描述 虚拟机标识符 选项 一般选项 输出选项 示例 先发出来,然后慢慢翻译~ 语法 jstat [ generalOption | outpu ...
- Enclosure POJ
0:Enclosure http://poj.openjudge.cn/challenge3/0/ 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 131072kB 描述 为了防止 ...
- Swift中的Void类型与空元祖表达式
可能有不少Swift开发者会忽略这么一个细节:在Swift中,Void类型其实是一个别名类型,而其真正的类型为(),即一个空元祖(empty tuple)! 这种语言特性给Swift带来了一些比较方便 ...
- EF 5.0 帮助类
EF 5.0 帮助类 加入命名空间: using System; using System.Data; using System.Data.Entity; using System.Data.Enti ...
- 在Window下安装Oracle 12C Cloud Control Agent
① 准备好安装源,这个ORACLE普通账号无法下载到,有需要的可以联系我 p14570373_112000_Generic.zip,用于Windows 64位操作系统 ② 解压p14570373_ ...
- 浅谈html5网页内嵌视频
更好的阅读体验:浅谈html5网页内嵌视频 如今在这个特殊的时代下:flash将死未死,微软和IE的历史问题,html5标准未定,苹果和谷歌的闭源和开源之争,移动互联网的大势所趋,浏览器各自为战... ...
- Python--类-例子
class Base: def __init__(self): self.data = [] def add(self, x): self.data.append(x) def addtwice(se ...
- cwRsync window下的跨服务器的文件同步
cwRsync 是window下的文件同步软件,可以跨服务器运行,第一次运行的时候是全部备份同步,之后的同步采用的是增量同步 这个软件分为服务端和客户端. 服务器是需要同步的文件源, 客户端相当于是备 ...