回家吃饭Android客户端整理后总结

http://www.jiashuangkuaizi.com/

来到回家吃饭五个月了!客户端从Eclipse环境上迁移到Studio上变化比较大,下面具体从以下几方面总结下回家吃饭Android客户端的变化:

1、使用动态代理AOP编程框架简洁、高效开发

该动态代理框架的核心是通过dexmaker和Spring的拦截器实现AOP编程;dexmaker是运行在Android DVM上,利用Java编写,来动态生成DEX字节码的API。如果了解Spring AOP编程的话,应该听说过cglib or ASM,但这两个工具生成都是Java字节码,而DVM加载的必须是DEX字节码。所以,想要在Android上进行AOP编程,Google 的dexmaker可以说是一个非常好的选择。

辅助的还有注解和反射,使用注解来标注同步、异步、加载框和加载显示的文字;反射回调继承以下Base类子类的方法:

BaseAsyncActivity

BaseAsyncFragment

BaseAsyncListAdapter

BaseAsyncObject

同时着重使用系统的Handler并封装为MessageProxy进行消息的分发与处理。

封装映射Map为ModelMap,方便回调时的数据传递。

因为公司项目是不外泄的,具体可以参考:

个人作品《BingoWorld》

下载地址

开源地址

2、使用OkHttp网络库提升安全及稳定性

客户端加入动态代理AOP编程框架后,又开始更换网络库,去掉xUtilsVolley,使用OkHttp。着重封装为四种请求加载方式:

OkHttpGet

OkHttpPost

OkHttpDownload

OkHttpUpload

OkHttp是Google推崇的,使用它不会担心适配的问题和稳定性,实际上现在封装的网络库确实稳定。

同时,通过Java的SSL对称加密和OkHttp结合,保护我们的数据安全不被拦截恶意篡改。

3、AS 下使用Gradle快速构建

客户端从Eclipse环境上迁移到Studio上最大的益处就是使用Gradle快速构建,通过maven和apt可以快速添加、使用和删除第三方库。

在Gradle下使用统一的签名方式,独立配置签名信息,在工程中不管debug还是release版都使用正式签名,包括地图的、推送、支付、分享和友盟统计等。

多渠道打包,定义不同的product flavor, 并把AndroiManifest中的channel渠道编号替换为对应的flavor标识。

自定义Build Type,可以使用默认的两种debug测试版和release正式版,还可以加入Grey测试版。

Gradle下,压缩资源、zip优化、混淆代码等控制方便,可以使客户端包更小,不容易反编译。

shrinkResources:压缩资源

zipAlignEnabled:zip优化

minifyEnabled:混淆代码

4、抽象、封装加重构多管齐下

以上三点的改变还是基础性的调整,在稳固的基础上我们要提高的就是代码清晰的层次和健壮性;回家吃饭客户端对多个界面、逻辑和功能进行封装后抽象出来,方便以后维护。

重构的界面有:

CodeLoginActivity:验证码登录

RiskControlActivity:风控验证

KitchenDetailActivity:厨房详情

MenuDetailActivity:菜品详情

SearchActivity:搜索页面

TakeWordActivity:捎句话

CouponActivity:优惠券

抽象涉及到的:

DetailLoveDoubleDishView:爱心双拼菜品

DetailLittleTableView:小饭桌菜品

DetailMenuDishView:菜品详情

DetailRecommendDishView:推荐菜

DetailCommonDishView:普通菜

DetailCommentView:评论

自定义View封装涉及到的:

ChoiceView:菜品选择View

ShareView:分享View

ShoppingView:购物车

TicketView:家厨饭票

UploadImageView:上传图片View

还有各种Manager管理类和Util工具类

KitchenCartManager :购物车管理类

LocationManager:定位管理类

ShareManager:分享管理类

NavigateManager:路由跳转管理类

DateUtil:时间工具类

FastJsonUtil:数据解析工具类

KeyBoardUtil:软键盘显示与隐藏工具类

SpecialViewUtil:文字颜色多样化显示工具类

5、使用别人的好“轮子”

现在的开发都在追求高效和快速,所以一个高效快速的开发离不开别人稳定的第三方库,我们也不可能从零开始,先看看我们的这些“轮子”:

Butterknife:黄油刀,编译时期的依赖注入,省去大量的findViewById重复操作

Logger:log打印利器,打印清晰,可以打印出对应的log行数

Esperandro:SharedPreferences key-value存取利器

OkHttp:Google推崇的网络库

Fastjson:阿里的数据解析库,用于网络请求后的数据解析

Universal Image Loader:使用最普遍的图片加载库

MultiDex:解决App中方法数超过65535个的分包库

Shape Image View:稳定不会引起内存泄漏的原型图片库,主要用于头像的显示

6、性能优化

产品 = 功能 + 性能,回家吃饭客户端已经在下面几个方面进行了性能优化:

LeakCanary:内存泄露目前在项目中一般用leakcanary基本就能搞定,配置起来也相当简单

ViewStub:View的延迟加载

过度绘制:使用RelativeLayout减少视图树的层级,防止过度绘制

onTrimMemory回调:应用响应此回调释放非必须内存,如图片的内存占用

lint检查:通过Android Studio中的 Analyze->Inspect Code 对工程代码做静态扫描;找出潜在的问题代码并修改,去掉无用的图片

 代码优化:去掉大量的临时变量和部分全局变量,优化for循环,建议使用增强for循环,在适当的生命周期中创建释放对象

7、实践新技术

上面大概的总结回家吃饭Android客户端的变化,但是还会继续变化,接下来的任务有:

重构还没有完,会继续重构其他页面,应用AOP编程框架

升级OkHttp2.6到OkHttp3.2,异步数据解析更加方便

使用Glide图片库和Realm数据库

注意lint检查,每次发版前通过lint检查找出潜在的问题代码并修改

修改工程的命名,使整个工程更加规范化

继续调研插件化和热更新,同时使整个工程模块化

尝试使用新技术到生产环境中,如RxAndroid、Retrofit、Drager2等

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容