从2010年开始介入Android开发,涉及Modem的data call、ril、RPC、framework、APP等,主要研究的是系统、应用优化、新功能开发、测试工具的开发。以下用思维导图把所了解的Android知识整理出来。
一、Android知识
1.1、四大组件
Activity: 生命周期管理、Intent、序列化、LanuchMode和Flag
Service: startService/stopService、bindService/unbindService、跨进程、binder/aidl、intentService
Broadcast Receiver: LocalBroadcastManager、普通和有序广播
Content Provider: 常见增删改查、ContentObserver、实现ContentProvider
1.2、控件使用
常见ViewGroup使用: LinearLayout、RelativeLayout、FrameLayout...
基础控件使用: TextView、Button、ImageView、EditText...
高级控件使用: ListView、RecycleView、Toolbar、ViewPager、WebView(常见使用&和JS交互)、SurfaceView
自定义view实现:onMeasure、onDraw、onLayout、自定义属性
绘图基础:BitmapDrawable、NinePatchDrawable、LayerDrawale、自定义绘制
Fragment: 生命周期、基本使用、状态恢复保存
动画: 帧动画、属性动画、补间动画
通知栏: 系统style、自定义RemoteView
1.3、数据存储
SharePreference、私有存储目录和SD卡、sqlite、contentProvider来实现数据读写
1.4、资源管理和打包
打包流程:编译、混淆、签名、Gradle....
资源管理:AssetManager、Resource、主题样式、多分辨率适配
1.5、网络
HttpUrlConnection:发送请求和返回数据解析、错误httpcode处理、CookieStore&代理&超时&重试等设置
tcp/udp
http/https: 数据报文结构、HttpCode(常见Header)、文件上传
抓包工具使用:Wireshark、HttpScoop、tcpdump
1.6、编程基础
操作系统
数据结构和算法
Java: 语法结构、常见I/O、多线程并发、虚拟机基础知识、面向对象设计、设计模式
Shell: 常见命令使用
1.7、开源框架
图片加载:Fresco、UIL、Picasso
推送:小米、友盟、极光
分享:友盟、微博、微信等
事件分发:EventBus、Otto
网络:Retrofit、OkHttp、Volley
1.8、进程与线程
进程:进程优先级、LowMemoryKiller、Servivce和Activity等多进程实现
线程:线程和线程池使用、Handler&HandlerThread、AsyncTask、Loader
1.9、优化
掉帧卡顿
CPU/内存占用过高,内存泄漏
过度绘制
电量优化:WakeLock、JobScheduler
ANR
排查工具:Lint、StrictMode、MAT、HierarchyViewer、开发者选项
1.10、测试基础
测试方法:冒烟测试、边界测试、回归测试、单元测试
MonkeyTest
Android Instrumentation
二、Android团队管理
2.1、编码规范及CodeReview
虽然有很多的Android编码规范,但其实都差不多,只是对个别的控件或名称有区别,推荐《阿里巴巴Android开发手册》
2.2、建立UI库或公共库,技术组内组外交流
建立团队技术氛围,新技术预研
2.3、跟踪Android系统版本
及时了解新版本系统特性,针对新版本的特点做版本优化及方案选择
5.0:Material Design、多种设备的支持、支持64位ART虚拟机、Project Volta电池续航改进计划等
6.0:动态权限管理、过度动画、支付、指纹等
7.0:分屏、通知消息快捷回复、夜间模式、流量保护模式等
8.0:安全(未知来源应用)、通知渠道细分操作、自适应图标、固定快捷方式和小部件等
2.4、写一点技术分享
关注订阅技术文章,多阅读,多总结
2.5、去尝试拥抱新事情
不要局限于业务逻辑,了解产品运营,数据收集,用户反馈
永远坚持学习