5、携程酒店Android应用性能优化实践 何金

Razor

2019/07/03 发布于 技术 分类

安卓绿色联盟 

文字内容
1. 安 卓 绿 色 联 盟 技术 沙龙 第 2 6期 · 走 进携 程 携程酒店Android应用性能优化实践
2. 何金 携程酒店无线事业部资深软件工程师 2014年加入携程酒店无线团队,先后负责携程酒店查询首页技术改造, 携程酒店地图页技术改造,携程酒店详情页性能优化等项目。
3. CONTENTS 01 背景 02 如何构建,从1.0到3.0 03 总结和思考
4. 01 背景
5. 背景 • 业务从简单到复杂 • 样式从单一到多种多样 • 结构和性能遇到了不小的挑战
6. 查询首页架构演进 简洁的1.0 头疼的2.0 合适的3.0
7. 02 如何构建,从1.0到3.0
8. 简洁的1.0版 业务单一, 布局简单 按业务垂直分成四个模块 • 顶部的标题栏,广告栏 • 中间的查询 • 底部的酒店模块推荐
9. 1.0架构 HotelInquireActvity ScrollView LinearLayout TitleFragment InquireADFragment InquireCoreFragment HotelInquireCacheBean RecommendFragment
10. 1.0版特点 优点:因为简单,所以简单 缺点:MVC模式,布局和业务耦合在一起,不适合复杂业务,随着业务的增加,势必带来代码的臃肿, 业务维护成本的提高
11. 头疼的2.0版 各种类型的信息展示样式 • 按照业务进行模块化拆分 根据业务拆分到相应的Moudle里 • 通过配置来管理各个Moudle • 每个Moudle负责管理自己的View和 业务
12. 2.0架构 HotelInquireActvity ScrollView LinearLayout InquireCoreFragment RecommendFragment BizMoule1 …… TitleFragment BottomFragment RootView BizMoule2Presenter BizMoule2 BizMoule2Repository BizMoule3 …… BizMouleN InquireBizConfig
13. Moudle结构 BizMoule BizMouleRepository BizMoulePresenter
14. InquireConfig结构 BottomFragment startLoadMoules() BizConfig BizManager Moule1Key BizMoule1 BizMoule1 Moule2Key BizMoule2 BizMoule2 Moule3Key BizMoule3 BizMoule3 BizMouleN Map …… …… …… MouleNKey BizMouleN List
15. 2.0版特点 优点: • 查询首页模块化,方便协同开发,提高开发效率 BizMoule1 BizMoule2 BizMouleN
16. 2.0版特点 缺点: 启动性能 LinearLayout BottomFragment RootView InquireBizConfig getContentView() startLoadMoules() BizMoule2Presenter BizMouleN …… BizMoule1 …… • ScrollView BizMoule2Presenter
17. 2.0版特点 缺点: ScrollView的坑 ScrollView ChildView ListView EditView RecyclerView ……..
18. 2.0版特点 缺点: • UI 交互交付难度较大,比如锚点/子模块顶部驻留等UI效果都必须定制开发,没有专门的接口 • 所有的业务模块结构并没有拉平,有的以Fragment形式存在,有的是Module形式存在
19. 与时俱进的3.0版 针对2.0版结构产生问题,3.0版主要做了下面两点事情 • 使用新的UI组件替代ScrollView • 进一步模块化,移除BottomFragment,将剩余的Fragment转换成module
20. 与时俱进的3.0版 ScrollView替代方案 方案 RecyclerView GroupListView VLayout 特点 • 通过Type实现多样式Item • 数据Model耦合,需要将所有Model统一收口到List管理 • 异构ListView • 通过实现每个Moudle的Adapter,完成View解耦 • • • • 异构RecyclerView 通过实现每个Moudle的ViewHolder,完成View解耦 提供多种LayoutHelper模版,不用重复造轮子 性能更优
21. 与时俱进的3.0版 LinearLayout TitleFragment TitleMoule InquireCoreFragment InquireMoule RecommendFragment RecommendMoule BizMoule1 BizMoule2 …… BizMouleN
22. 3.0架构 HotelInquireActvity VLayout InquireBizConfig …… InquireCoreMoule BizMoule1 BizMoule2 …… TitleMoule BizMouleN InquireMoulePresenter MouleNPresenter InquireMouleRepository MouleNRepository
23. 3.0版特点 优点: • 查询页结构更清晰,简洁 • 性能得到了较大改善 • 不用重复造轮子,利用Vlayout提供的UI组件,很方便的实现复杂的UI和交互,提高了开发和交付效率
24. 03 总结和思考
25. 总结和思考 • 渐进式的架构迭代,既保证了业务的上线,也避免了重构带来的风险 • 良好的结构,是开发效率,代码性能和业务质量保障 • 提供了一种模块化的借鉴思路
26. THANKS 安卓绿色联盟 携程技术中心
27. 添加安卓绿色联盟官方助手微信 备注说明,加入现场技术交流群