使用工具来提高Android开发效率

正所谓工欲善其事,必先利其器。学习并应用优秀的轮子,可让咱们跑的更快,走的更远。这里所指的工具是广义的,泛指能帮助咱们开发的东西,或者能提升咱们效率的东西,包括:开发工具,监测工具,第三方代码库等。 html

优质的第三方开源类库

图片加载与缓存

现代的应用程序不免会有图片显示给用户,对于资讯类,旅游类,购物类等应用程序而言,图片的展现更是应用里面关键的一环。而图片从加载,到缓存再到显示是一个比较复杂的过程,中间还要处理网络异常,解析异常等。图片又是极其耗费内存的,稍不注意就会出现OutOfMemory(OOM)的错误。若是你的图片在你的应用中不是主要的东西,仅是偶尔显示个Icon和图标之类的,那还好,普通的异步加载和解析(BitmapFactory)就好。但若是要在应用中展现大量的图片时,甚至应用的主要内容就是图片时,这时就要借助于优秀的开源库了:android

  • Universal Image Loadergit

    这个库很是强大,从加载,到解析到显示,你只配置参数,告诉它如何作,再给它一个ImageView就能够了,而后你就能够去喝茶去了。github

  • Picasso

EventBus彻底解耦模块

观察者模式,或者生产者消费者模型在开发中是很常见的,好比说异步加载数据,之类的都会用到相似的结构。一般的作法就是建立一个Listener用于回调,以返回数据。若是有一个二个还好,但若是多了,应用须要获取大量的不一样的数据,就会出现大量的线程和Listener,处处是addListener和implements Listener,这会形成大量的代码和依赖,程序会变得混乱,业务逻辑会迷失在Listener之中,并且还要及时的unregisterListener,以防不应被回调到时能取消。这还会形成代码和模块之间的强耦合,也就是写代码的时候必要在有另外一方,不然不会编译过。这时就能够用EventBus来解耦了,它是一个框架能让双方很容易的进行通信,而没必要知道彼此的存在与否:编程

  • EventBus 这个库很是的高效与方便,它彻底不依赖于注解。
  • Otto 这个要使用注解,因此在效率上可能会略差一些。
  • Guava 这个是Google Java增长库Guava中的一个

这些的库的基思想和目的都是一致的,都是以总线的方式,让强耦合的双方解耦,不妨在你的应用中使用一下,体验一下。缓存

CirclImageView

这彷佛是一个比较小型的库,它只是一个特殊的ImageView用圆形的方式来显示图片。网络

XListView

这是一个支持下拉刷新(PulltoRefresh)和上拉加载更多(Load more)的定制ListView。app

ViewPageIndicator

这个是要与官方的ViewPager一块儿使用的,为ViewPager添加indicator的类库,很是的有名,不少应用都在使用。框架

ActionbarSherlock

这个库很是的有名,不少优秀的应用都基于此。ActionBar是一个不错的用户体验,它能集导航,操做和信息于一体的导航栏,Google也极力推荐使用它。可是有一个问题就是它是HoneyCombe(API 11)才引及的一个组件,而对于大多数开发者来讲,GingerBread(2.3)仍是不能放弃的肉,因此这个类库应运而生。这个库易于使用,根据手机版原本选择实现方式,若是是3.0以上就直接使用系统的Actionbar。其中的代码也是值得全部开发者去拜读。异步

DragSortListView

用过iOS设备的人可能会注意到iOS里面的全部列表都有一个很是酷的功能,那就是在编辑模式下,能够任意对列表进行从新排库。可是令开发沮丧的是,这是iOS中UITableView的标准内嵌功能。而Android的ListView只提供最基本的功能。所以就有了此类库的出现。其实除了此库,还有不少其余的库的出现也都是为了实现相似iOS体验而作的。 固然这个类库有一个小问题须要注意,就是它内部会建立一个ItemView来Wrapper客户代码提供的ItemView,而在Wrapper时,它会使用WRAP_CONTENT作为高和宽,因此,用了这个类库会发现宽度不会Match整个屏幕。解决的办法就是在建立Adapter#getView时再用代码指定一扁LayoutParams,把宽设为MatchParent就行了。

NineOldAndroid

这个库也是解决低版本之痛的。从3.0开始,Google引入了新的动画库,称做Property动画,使实现动画不但变得很是简单,同时也能实现更加复杂的动画。只要对对象的属性进行计算,就能让这个对象动起来。可是一样,对于2.3之前就只能用旧的补间动画(Tween Animation),这种动画复杂,须要写大量的代码。这个库就能统一操做,让动画变得简单 这里介绍的,只是一些比较经常使用的也是比较有名的类库。这些库不但优秀,好用,并且最重要的是还开源,你能够去学习,去研究,甚至去改进。那么,这些还远远不够,咱们的应用日益复杂,各类需求,怎么办呢?

如何获取更多的类库

学习编程的第一天起,前辈们就说,不要重复制造轮子,老手与新手的区别也在于,老手善于利用已有的东西,而不是一块儿都从0开始,无数的优秀的类库已经能帮忙解决不少问题,它们健壮,方便,好用,因此为何还要本身费劲去从新造轮子呢?

二个开发者必备之神器

如今的开源类库很是之多,有些咱们可能不知道,即便看到一个类库的主页或者源码,也要花时间研究下,它究竟能干什么,适合干什么,以及可否解决咱们遇到的问题,这是介绍三款神器:

这三款都是Android应用,只是它们的内容是介绍众多优质的开源类库,它会列出每一个类库的信息,如做者,源友位置,简要说明。最最重要的是它把类库的例子也集成起来了,你能够立马运行类库的Demo以体验这个类库究竟是干啥的,这真的是良心之做。等什么呢,赶快去下载安装吧。

Github

提起开源,Github固然是首届一指的,其上托管着无数的优秀的开源库,没事常去逛逛总会有好处,甚至是惊喜的。惟一麻烦的就是,里面的内容太多了,容易看花眼和找不到想要的东西。因此仍是上面的应用来的干脆直接。

优质的聚合平台

除此以外,还有一些优秀的网络社区和博客会收集和整理优秀的开源类库,这也是咱们须要关注的,好比:

  • 伯乐 这里面罗列了大量的优秀的库和工具,这里不只有库还有工具。此外这个网站也值得全部开发者收藏,里面会聚合优秀的博客和资源。
  • CodePath

每一个应用程序必不可少的组件

如今的应用程序有一些东西是必要的,好比分享功能,好比推送消息,好比应用程序统计和崩溃报告等,若是你是一个大型公司,拥有大团队,或者已经发现成为行业领头羊,那么这些东西最好本身实现,以达到更好的控制和运营,也防止数据外泄。但对于小团队,或者我的开发者,来讲,仍是利用现成的解决方案好比靠谱。

分享到社交平台

ShareSDK友盟都提供了免费的SDK用以实现分享到各大社交平台。 其实每一个社交平台都有提供了SDK,可是有些麻烦的是开发者必需要一一去注册,以获取APP_KEY,同时还要处理用户受权以得到访问社交数据,不一样的SDK,虽然基本思想是一致的,可是具体开发过程不免会有坑。ShareSDK就是帮助开发者解决了这些问题,它在各个媒体平台上都注册了,也封装处理了受权过程,可是带来方便的同时,它有缺点: * 分享到社交媒体上的信息会显示“来自ShareSDK”,而非你的应用。这个一般是显示开发者在社交媒体上注册的信息。 * ShareSDK的受权方式是经过网页形式,而非API,过于简单且受权信息不容易持久化,也就是用户可能会常常(甚至每次)分享时都须要受权。而若是直接使用媒体受权API,能够直接获取APP_SECRETE,在未过时(通常Expiration会比较长)以前均可以直接分享,无需受权。

因此你看全部的用户量超大的应用,各大新闻客户端等,都是本身集成和绑定社交媒体,不会经过第三方的库。

推送消息

如今的应用程序基本上都会有后台服务提供数据,也会增长推送消息,这个是运营的重要手段,能保持应用的活跃,虽然我不喜欢推送消息,由于早上一打开手机,全都是推送消息。可是推送仍是必要的,也有现成的方案能够用:

这二个也都很是好用,它包括客户端SDK和Server端后台,是全套的,很是方便实用。 除此以外,若是是面向海外用户,能够用Google提供的,Google Clould Messaging,它也很是好用,由于毕竟是官方的,能够与Apple的推送服务媲美。可是它的最大的缺点在于,Google Services都依赖于Google Play,也就是说运行时手机上必需要有Google Play Services,也即必需要安装有GMS才能够。但中国大陆的手机所有没有GMS,所以GCM也用不了。因此个推和友盟也才有机会。

应用统计信息

移动开发不仅仅只有开发出一个出色的APP这么简单,开发完了还要运营,而应用的统计绝对是运营的一个重要手段,后期的新功能,以及发展方向要取决于应用的统计数据,统计能看出用户的特征,分布,使用习惯等。固然了,在统计方面友盟绝对是最好的,它开始的最好,如今也是作的最好的,使用也很是的简单。

应用崩溃报告

如今的Android手机种类极其之多,各类奇葩的设备都有,在标准的手机和模拟器上运行没有问题,可是在某些定制ROM的手机上可能就会挂。另外,程序也会有你想不到Bug致使崩溃。所以咱们须要收集应用的崩溃信息,之后期改进。若是你集成了友盟统计,它会自动收集崩溃信息,可是它只能收集Java层的,且信息比较简单,只有一个StackTrace。若是想要收集Native层的,以及得到更多的信息的话,就要使用其余库,或者本身实现。本身实现也不难,就是要处理unhandledException,而后把客户端的信息,如版本,配置,再把手机的信息收集一下,发到后台,后台再作个报表,能查看错误信息就能够了。但若是不想本身作,可使用Application Crash Reports for Android这个库能够解决客户端的问题,也就是说它能在发生Crash时,收集足够的信息(哪配置要收集哪些信息),而后发送,它能够配置成发送到Server后台,也能够发送到开发者的邮箱,很方便和实用,特别是对于我的开发者来讲。须要注意的是,要想能发送到邮箱,手机用户必须配置了Email账户,国内用户貌似没有这习惯,由于国内用户不习惯用邮件,更不要说给手机配置邮件账户。可是对于国外用户,这是没有问题的,国外用户习惯电子邮件,并且手机上都会配置。

相关文章
相关标签/搜索