Android高工必备技能
转载:http://www.jianshu.com/p/d791bbede02c
Step 1. 玩转RxJava
使用RxJava处理异步极其方便,各种操作符可以对数据做流水线式操作,再加上与Retrofit的结合,使得Andorid开发变的极其简单。唯一美中不足的就是RxJava不符合我们以往的编程思想,学习Rxjava存在一定的难度,很多工程师对Rxjava都不能完全理解。不过,相信以下2个内容会让你对Rxjava的使用有一个更清晰的认识。
- 给 Android 开发者的 RxJava 详解
- 开源项目Hello—RxJava让你彻底明白RxJava的异步编程。
项目地址:https://github.com/xinghongfei/Hello-RxJava
Step 2. 自定义view
自定义View主要掌握以下四部分内容:
- 绘制机制:掌握onMeasure,onLayout,onDraw及相关类的使用。
- 事件传递机制:掌握dispathTouchEvent(),onInterceptEvent(),onTouchEvent()三者的相关逻辑.
- 属性动画:因为属性动画核心是对数值的变化。自定义View中使用属性动画很方便对数值进行变换。
- 相关手势类。
你需要的东西都在这里https://github.com/xinghongfei/awesome-view
Step 3. 进程间通信与进程保活
- 进程间通信
进程间通信通常通过以下7种手段:
- Bundle:主要是放在Intent中,在四大组件间传递。
- 文件共享:一个进程写文件,一个进程读文件。
- SharedPreferences: 不支持并发,底层基于xml。
- Messenger:底层是通过IPC进行通信的,主要是进程间传递数据,不支持并发。
- Socket:基于TCP协议。
- AIDL: 支持并发,一个进程可以调用另一个进程的方法。
- ContentProvider:不同的应用间数据共享。
详解:《Android开发艺术探究》进程间通信读书笔记
2.进程保活
开源项目Hello-Daemon
项目地址https://github.com/xinghongfei/Hello-Daemon
Step 4. 热修复
线上程序出现bug,必须要有妙手回春的本事,想成为一名Andorid高工,这是必备技能。
现在市面上热修复框架很多,以下是常见的四种。
| Tinker | QZone | AndFix | Dexposed | |
|---|---|---|---|---|
| 类替换 | yes | yes | no | no |
| So替换 | yes | no | no | no |
| 资源替换 | yes | yes | no | no |
| 全平台支持 | yes | yes | yes | no |
| 即时生效 | no | no | yes | yes |
| 性能损耗 | 较小 | 较大 | 较小 | 较小 |
| 补丁包大小 | 较小 | 较大 | 一般 | 一般 |
| 开发透明 | yes | yes | no | no |
| 复杂度 | 较低 | 较低 | 复杂 | 复杂 |
| gradle支持 | yes | no | no | no |
| 接口文档 | 丰富 | 较少 | 一般 | 较少 |
| Rom体积 | Dalvik较大 | 较小 | 较小 | 较小 |
| 成功率 | 较高 | 最高 | 一般 | 一般 |
总的来说:
- Dexposed无法支持全平台,并不适合应用到商业产品中。
- AndFix作为native解决方案,首先面临的是稳定性与兼容性问题,更重要的是它无法实现类替换,它是需要大量额外的开发成本的。
QZone方案主要问题是插桩带来Dalvik的性能问题,以及为了解决Art下内存地址问题而导致补丁包急速增大的。
Tinker热补丁方案不仅支持类、So以及资源的替换,它还是2.X-7.X的全平台支持。它无需插桩,补丁大小也远远小于其他方案。Tinker已运行在微信的数亿Android设备上。
下面这个项目是一个基于热修复框架Tinker的Demo,并总结了一些常见的问题。
项目地址https://github.com/xinghongfei/Hello-Tinker
Step 5. 架构
常见的架构有:MVC,MVP,MVVM。使用最多的就是MVC架构了,现在很多应用也使用MVP架构,MVVM用的还很少。
Android App的设计架构:MVC,MVP,MVVM与架构经验谈
Google的android-architecture
Android Data Binding
下面这个项目是一个特别简单的MVP架构框架,模拟文件下载。
项目地址https://github.com/xinghongfei/Hello-MVP
Android高工必备技能的更多相关文章
- Android java程序员必备技能,集合与数组中遍历元素,增强for循环的使用详解及代码
Android java程序员必备技能,集合与数组中遍历元素, 增强for循环的使用详解及代码 作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 For ...
- Android开发者必备的42个链接
http://mobile.51cto.com/ahot-426035.htm Android开发者必备的42个链接 下面收集了42个帮助大家学习Android的内容链接,部分内容是面向初学者的,帮助 ...
- Android 开发必备
Android 开发必备 http://www.androiddevtools.cn/ 收集整理Android开发所需的Android SDK.开发中用到的工具.Android开发教程.Android ...
- 八款Android 开发者必备的小工具
Photo from https://www.airpair.com 在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大 ...
- 详解linux运维工程师入门级必备技能
详解linux运维工程师入门级必备技能 | 浏览:659 | 更新:2013-12-24 23:23 | 标签:linux it自动化运维就是要很方便的运用各种工具进行管理维护,有效的实施服务器保护 ...
- 自动化部署必备技能—部署yum仓库、定制rpm包
部署yum仓库.定制rpm包 目录 第1章 扩展 - yum缓存 1.1 yum缓存使用步骤... 1 1.1.1 导言... 1 1.1.2 修改配置文件... 1 1.1.3 使用缓存... 1 ...
- 【转帖】系统软件工程师必备技能-进程内存的working set size(WSS)测量
系统软件工程师必备技能-进程内存的working set size(WSS)测量 2018年12月28日 18:43:01 Linuxer_ 阅读数:145 https://blog.csdn.net ...
- SQL Server管理员必备技能之性能优化
SQL Server管理员必备技能之性能优化 高文龙关注1人评论1171人阅读2017-09-22 08:27:41 SQL Server 作为企业必不可少的服务之一,所以对于管理员的日常运维是一个极 ...
- 高级Linux运维工程师必备技能(扫盲篇)
高级Linux运维工程师必备技能(扫盲篇) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在了解文件系统之前,我们要学习一下磁盘存储数据的方式,大家都知道文件从内存若要持久化存储的 ...
随机推荐
- HTML 学习笔记 CSS(表格)
CSS 表格属性可以帮助您极大的改善表格的外观 表格边框 如需在CSS中设置表格的边框 请使用border属性. 在下面的例子中table th 以及td设置了蓝色边框. table, th, td ...
- 实现鼠标拖动canvas绘制的图片
不啰嗦上代码: <html> <head> <meta http-equiv="Content-Type" content="text/ht ...
- sublime和python--path
配置Sublime Text 2 的Python运行环境 (2013-09-11 11:36:17) 转载▼ 标签: python 分类: 科技相关 Sublime Text 2作为一款轻量级 ...
- Java中HashSet,HashMap和HashTable的区别
HashMap.HashSet.HashTable之间的区别是Java程序员的一个常见面试题目,在此仅以此博客记录,并深入源代码进行分析: 在分析之前,先将其区别列于下面 1:HashSet底层采用的 ...
- DLL放在指定目录 以及设置dll调用路径
一.DLL放在指定目录 在编写C# winform程序中,不免一个项目会有多个工程文件,而这些工程文件之间是相互引用的,所以不想将工程的生成结果(exe或者dll)放在当前工程bin目录下的Debug ...
- youtube下载
http://jingyan.baidu.com/article/39810a23d2deb2b637fda66c.html
- 深度学习(deep learning)
最近deep learning大火,不仅仅受到学术界的关注,更在工业界受到大家的追捧.在很多重要的评测中,DL都取得了state of the art的效果.尤其是在语音识别方面,DL使得错误率下降了 ...
- React Native开发技术周报1
(一).资讯 1.React Native 0.21版本发布,最新版本功能特点,修复的Bug可以看一下已翻译 重要:如果升级 Android 项目到这个版本一定要读! 我们简化了 Android 应用 ...
- 在线音乐网站【04】Part two 功能实现
上一篇博客里面已近总结了三个功能的具体实现,今天把剩余功能的具体实现补充总结,如果你想对整个小项目有清楚的了解,建议去看下前几篇博客. 1.在线音乐网站(1)需求和功能结构 2.在线音乐网站(2 ...
- bash中变量+=,if大小判断,随机休眠
#!/bin/bash index= while true;do echo "hello" (( index+=)) echo `date "+%H:%M:%S" ...