A Cookbook shall look like a collection of Recipes, or an index page from where dinner are made. And it keeps you sane.
github上已经star了四百多个项目,应该复习下了。
各个平台相关的特定的一些记录
布局相关的点
theme和Style Dan lew
事件分发,动画,自定义View
android使用selectableItemBackground的一些坑
activity transition pre and post lollipop
事件分发流程
安卓坐标系常用方法
android-Ultra-pull-to-refresh分析
内存管理
任务管理
V4包里面的东西
使用RecyclerView的Animation Android Dev Summit 2015 yigit boyar和Chet Haase
自定义LayoutManager Dave Smith
Fragment源码解析
底层原理
主线程的工作原理 Michael Bailey American Express, 他2016年还讲了LayoutInflater的工作原理
vsync原理解释
让service常驻后台的方法
//下面这些已经有人写的很好了,直接看就可以了
应用进程启动流程
Launcher启动流程
SystemServer进程启动流程
Zygote进程启动流程
Apk安装流程
Activity启动流程
//这个博主写的一系列底层分析都比较清楚
图片出自搜狐
Activity的生命周期
Instant Run的工作原理
插件化加载就两件事,代码加载,资源加载
新版本适配,新特性
工具方法
沉浸式状态栏
replace butterKnife with databinding
拆轮子
Glide源码解析
Rxjava2的一些点 Jake Wharton
Retrofit源码解析
OkHttp和Okio源码解析
跟java相关的
java集合类的实现原理
Java线程池的一些点
使用AnnotationProcessor自动生成代码
翻译了一个印度口音的关于jvm架构的视频
一个Java Object到底占用多少内存(from java code to java heap)
LruCache的原理
工具书
杂乱的点
ToDo List
Java相关
- [X] 画一下java的集合框架
- [X] String StringBuffer StringBuilder区别(StringBuffer很多方法都加了synchronized)
- [ ] 多线程异步断点续传框架原理,利用该原理在图片加载框架中的应用(MappedByteBuffer或者RandomAccessFile)
- [X] 多线程断点续传原理,大文件下载oom问题
- [X] java位运算,Collection框架中多次用到了
- [ ] gson的原理,cache什么的,常规json解析器的原理
- [ ] 垃圾回收器的分类及优缺点
- [X] ThreadLocal原理及可能的内存泄漏(主要还是Thread的生命周期比较长)
- [ ] Understanding Dagger2’s generated code
- [X] 单例模式需要考虑到jvm优化的问题(为什么要写两个synchronized)
- [ ] java类加载机制(classLoader相关的,类的加载顺序)
- [ ] Java四种引用
- [ ] Future和FutureTask,CompletableFuture这些怎么用
- [ ]反射
- [ ] java堆和栈的区别,如何判断堆栈上的对象死没死
- [ ] 自己写一个一部图片加载框架,并发图像滤镜框架
- [ ] try catch finally到底会不会执行
- [ ] 并发编程,java.util.concurrent里面的类熟练掌握,粗略了解原理
- [ ]写一个生产者消费者模型
- [X] HashMap和conrrentHashmap区别(分段锁比较难)Segement分段,获取size的时候先乐观,然后悲观
- [ ] java的包结构:java.lang(Language核心类);java.io(I/O相关);java.util(包含collection和concurrent);java.nio(另一种I/O);java.net(网络操作)
- [ ] 面试长谈问题
- [ ] jvm字节码看函数调用链接,Jit for dummies
- [ ] OkHttp跑分github以及作者的Gplus,以及外国人做的High-Concurrency HTTP Clients on the JVM,纯属好玩。
- [ ] 指令重排序,内存栅栏,JVM垃圾回收机制,何时触发MinorGC
- [ ] Eden和Survivor的比例分配等
- [ ] Gson主要的代码在JsonWriter里面,打几个断点即可。gson这类parser的劣势就在于allocating a bounch of String(array) and throw them away。
- [ ] 类加载机制和时序
Android相关
- [ ] 在线查看AOSP源码的最好网站
- [ ] AppCompat源码解析
- [ ] ContentProvider的启动过程
- [ ] IPC,Binder原理Binder学习指南
- [ ] Android Internals
- [ ] cookie存储位置(data/data/package_name/app_WebView/Cookies.db),db存储位置
- [ ] Binder的原理,Binder里面引用计数的原理,Binder底层为什么用红黑树
- [X] 拆ButterKnife
- [X] onSaveInstance,不仅仅是Activity,Fragment,View中也有,具体实现原理。View一定要有id(在View.dispatchSaveInstanceState中判断了id不为-1).[继承BaseSavedState]
- [X] 热修复框架原理
- Android应用程序资源的编译和打包过程分析
- [ ] WebView JS交互,WebView存在的漏洞,通过反射可看可能存在的安全问题以及C代码
- [ ] Media相关,视频播放etc,相机,滤镜等.Demo
- [X] FFMpeg,IjkPlayer,弹幕
- [X] using protobuf on android
- [ ] binder线程池被占满(默认最多15条线程)
- [ ] UI Toolkit源码解析(android.widget包下面的)
- [X] ViewPager的原理,作者Adam Powell
- [ ] View的源码, View的绘制原理(往displayList那边靠)
- [ ] ViewGroup源码
- [X] FrameLayout
- [X] LinearLayout(主要代码在measureHorizontal,layoutHorizontal)
- [ ] RelativeLayout
- [X] PopupWindow(api24以上的深坑网上也有解决方法)
- [X] Dialog
- [X] ImageView(onMeasure主要是尊重drawable的aspect ratio)setImageResource前后图片大小不一致会有些问题
- [ ] TextView(super complicated)
- [X] ScrollView(不到2000行,滑动是在onTouchEvent里面修改mScrollY实现的,而mScrollY会在View的draw里面去translate一下canvas,所以ScrollView就是这么滑动的)
- [ ] NestedScrollView
- [ ] ListView原理,加载优化
- [ ] RecyclerView(这货最早的时候9K行,现在好像1.2W行。prefetcher什么的,滑动过程中不去加载图片,参考我写的Glide笔记)
- [ ] 属性动画据说用了反射,源码解析
- [ ] Aosp中的launcher地址Launcher3,网上分析的也很多
- [X] Context是什么
- [ ]Android View的显示框架原理,讲的比较全
- [X] 美团那个Walle 还是要玩玩的
- [X] Android生命周期在不同版本的表现形式有些onXXX在高版本不会调,原因是HoneyComb之后对Activity LifeCycle进行了改动
- [ ] 要不是Jake Wharton在DroidConNYC2017上提到,还不知道有v4包里面有AtomicFile这玩意
- [X] LocalBroadCastManager好像是基于handler实现的
- [ ] armeabiv,arm64-v8a等问题Android 设备的CPU类型(通常称为”ABIs”)
- [ ] Romain Guy提到了android asset atlas,顺带看下ZygotoInit.preloadDrawable的定义在com.android.internal.R.array.preloadingdrawables
- [ ] Zygote进程启动流程
- [X] SystemServer进程启动流程
- [ ] Launcher启动流程
- Android 应用点击图标到Activity界面显示的过程分析
- Android面试题汇总
- [X] SurfaceView,TextureView从入门到解析
- [ ] LeakCanary的原理就是registerActivityLifecycleCallbacks,在onDestory的时候,检查有没有该释放没有释放的东西,具体的Pierre-Yves Ricau在Droidcon NYC 2015 - Detect all memory leaks with LeakCanary! 都说过了。
- [ ] Android watchdog
- [ ]加上一个支持多进程的SharedPreference Manager吧,差点忘了。
Studio里面看源码,find usage没有的话,find in path , choose android sdk
Linux相关
- [X] linux进程间通信方式有哪些(信号量这种)
- [X] Linux command extended
- [X] 搭建mail服务
- [x] win10加ubuntu双系统安装[如果不需要了直接删分区,删除引导即可]
- [x]win10 装ubuntu有时候失败是因为删除了C盘的一个文件夹参考
网络通信
Gradle相关
- [ ]写一些DSL吧Old Driver
- [X] Gradle下载的cache都放在C盘了,问题是C盘哪里,能删吗,C盘快不够用了
Python
- [ ] sending mail via Flask
- [X] bootstrap integration
数据库相关
- [X] MySql从入门到删库跑路
- [ ] Realm的优点
C语言从入门到放弃
- [X] 加载ffmpeg需要,不得不学ffmpeg教程
数据结构,算法(注意,不值得深究)
- [ ] 数据结构,操作系统
- [X] 编码,底层二进制
- [X] 二分法查找,排序,冒泡,复杂度
- [ ] 数组跟链表区别,数组跟链表排序时区别,数组跟链表排序时区别
- [ ] 八大排序算法
- [ ] 算法刷题网站剑指offer,leetcode
一些精彩的的演讲
Droidcon Montreal Jake Wharton - A Few Ok Libraries
Advanced Scrolling Techniques on Android
Android Graphics Performance the cost of setAlpha
Developing Mobile Experiences at Facebook’s scale
一些有名的人
GDE
Dianne Hackborn
Jesse Wilson
Good Reading
Android Source code
Project Butter and other stuff
SurfaceFlinger
一些列入的规划的想法
- 多线程下载实例
- 自己写一个ImageLoader(主要是多线程同步的问题,queue)
对于Android来说,平台技术发展相对缓慢,这是跟前端比。