Skip to content
clarkehe edited this page Nov 2, 2016 · 88 revisions

Binder与Ashm

为什么将Binder与Ashm匿名共享内存放在开头,因为Binder与Ashm是Android在Linux内核上新加的机制,都是IPC机制。Binder是整个Android系统的核心机制,理解Binder对理解整个系统至关重要。对于Binder机制的介绍可以看universus写的《Android Binder设计与实现》。另外还两个老外介绍Binder的PPT也不错。

Android Binder设计与实现 - 设计篇
inter-process method invocation in Android (相对入门一点,可以先看这个)
Deep Dive into Android IPC:Binder Framework
android与linux的关系(看前几页PPT就好了)

Android的匿名共享内存机制是在内核实现的,也是基于Linux内核本身的共享内存机制,作了一层封装。Android提供了匿名共享内存的C运行库访问接口(但NDK不能使用),Java层也有访问接口,就是MemoryFile,通过研究MemoryFile可以了解匿名内存的机制。

An Introduction to Android Shared Memory
Android Binder 分析——匿名共享内存(Ashmem)
Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划

Linux下的IPC机制,有System V and POSIX两个标准,提供的接口会不一样,其中就有共享内存的访问接口(shm_open/shmget),但在NDK下在两套接口都不能用。

Linux System V and POSIX IPC Examples

绘制系统

android graphics
绘制系统(1): Surface
绘制系统(2): BufferQueue
绘制系统(3): SurfaceTexture

网络

网络(1): 两个概念,延迟与丢包率
网络(2): 域名劫持

内存

内存(1): app内存浅析
内存(2): 内存缓存之LruCache
内存(3): 进程回收机制(low memory killer)
内存(4): GC机制(low memory killer)
内存(5): 内存分析工具

省电

手机休眠引发的“血案”
Android休眠机制
耗电分析

性能优化

性能(1): 使用SysTrace定位及优化性能问题实战
性能(2): TraceView

热补丁

2016年,热补丁技术很火,TX就出了三个方案,阿里出了两个方案,以WX出的Tinker方案最有代表性,Tinker已经开源。 理解插件机制,要理解Android下Dex文件及Class的加载机制,虚拟机不同实现对补丁方案也有影响。

热补丁(1): 补丁方案及原理

包大小

H5

###架构

###音视频与直播技术 2016年直播应用大爆发,说下与直播相关的技术问题。建议先看下《移动直播技术秒开优化经验(含PPT)》,对视频直播的整个技术栈及相关问题有比较清晰的描述。

移动直播技术秒开优化经验(含PPT)
H264编码模式
视频直播协议

测试

Coding技术

Coding(1): 侵入式接口、反向控制、依赖注入
Coding(2): 函数式编程、响应函数式编程
Coding(3): 闭包、Lambda表达式
Coding(4): RxJava
Coding(6): 注解及ButterKnife
Coding(7): Glide使用及注意的地方

Android相关

Android(1): Activity生命周期中的onSaveInstanceState
Android(2): 事件分发机制
Android(3): Service Intent must be explicit 异常解决
Android(4): ClassLoader与MultiDex分包
Android(5): Set service foreground with notification
Android(6): Get running app for Android 5.1
Android(7): Crash及ANR捕捉上报
Android(8): 代码质量检查
Android(9): 国产机的那些坑
Android(10): 进程保活实战
Android(11): 代码混淆
Android(12): APK签名
Android(14): Dialog、AlertDialog、PopupWindow、DialogFragment
Android(15): Handling Runtime Changes(屏幕方向发生变化)
Android(16): AsyncTask、Thread区别
android(17): View三大属性参数:attrs、defStyleAttr、defStyleRes
android(18): Fragment常见的坑
Android(19): ViewController的设计
Android(20): 下拉刷新的实现

杂谈

从PC角度看移动端开发技术
抽象思维
杂谈(1): 技术方案的选择也要考虑用户的价值与利益
杂谈(2): 沟通与团队合作
杂谈(3): 自省沟通
杂谈(4): 这个Bug改不改?
杂谈(5): 工作沟通要带有目的
杂谈(6): 目标沟通,SMART原则
杂谈(7): 《情商》读后感之一
杂谈(8): 修心,让自己安静下来

面试

面试(1): 知乎上的经验(汤涛)
面试(2): 最近面试总结

项目团队

项目经验(1): 手游宝一年的总结
项目经验(2): 评价与考核
项目经验3:技术Leader的职责

产品

产品1:我对产品的看法
产品2:《取舍与敏捷》
产品(转1)Pony对QQMail的邮件摘录
产品(转2)马化腾培训教材:让产品自己召人
产品(转3)产品设计与用户体验--马化腾

其他

转载1: 我在Facebook的十点经验分享
Mac开发环境工具配置

Clone this wiki locally