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 ...
随机推荐
- C++多线程开发之actor model
最近想把写过的一个多线程程序整理一下,这个程序主要特点是有一系列的互相之间有依赖关系的task.于是在网上找相关类库 1,一类是简单的线程池了,这也是原本俺的做法.之前使用的是手工调度,代码实现的很蛋 ...
- 使用json-lib进行Java和JSON之间的转换 [转]
[转] http://www.cnblogs.com/mailingfeng/archive/2012/01/18/2325707.html 1. json-lib是一个java类库,提供将Java对 ...
- sublime Text Pastry使用
来源: https://github.com/duydao/Text-Pastry/wiki/Examples Using a text list Using the Clipboard Clip ...
- 为什么你还在用嵌入式的方式来使用mod_wsgi?
可能你还不知道你的python 网站是否跑在embedded mod of mod_wsgi,不管你知不知道请看下去,因为大部分人都是在这个工作模式下运行的.嵌入式顾名思义就是运行在apache的子 ...
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现[转载]
原文:http://outofmemory.cn/code-snippet/35524/AES-with-javascript-java-csharp-python-or-php c#里面的AES加密 ...
- magic_quotes_gpc 、 magic_quotes_runtime 、 magic_quotes_sybase 介绍
一.三个配置项的作用与区别 magic_quotes_gpc 作用:对php服务器端接收的 GET POST COOKIE 的值执行 addslashes() 操作.作用范围是:WEB客户服务端.作用 ...
- Pro ASP.NET MVC –第四章 语言特性精华
C#语言有很多特性,并不是所有的程序员都了解本书我们将会使用的C#语言特性.因此,在本章,我们将了解一下作为一个好的MVC程序员需要了解C#语言的特性. 每个特性我们都只是简要介绍.如果你想深入了解L ...
- database link
create database link lims_qumas_supplyconnect to QPROCESSDEV identified by qprocessdevusing '(DESCRI ...
- LNMP软件安装所在的目录详细
LNMP相关软件安装目录Nginx 目录: /usr/local/nginx/MySQL 目录 : /usr/local/mysql/MySQL数据库所在目录:/usr/local/mysql/var ...
- ubuntu-16.10-desktop-amd64.iso 版本 安装 oracle 11gR2 11.2.0.1 database
特点: 需要重新安装:libaio1_0.3.109-2ubuntu?_amd64.deb.默认的libaio库有问题,和其默认libaio的编译方式有关! 需要重新安装gcc 4.x,默认的gcc ...