Android 五大布局介绍
https://www.jianshu.com/p/4fac6304d872
FrameLayout,LinearLayout,RelativeLayout,TableLayout,AbsoluteLayout(弃)
断点调试
http://blog.csdn.net/yy1300326388/article/details/46501871
TraceView 性能分析
https://bxbxbai.github.io/2014/10/25/use-trace-view/
Android 8 新特性
https://zhuanlan.zhihu.com/p/26409511
通知渠道,画中画模式,自适应图标,固定快捷方式和小部件….
Android 中 RelativeLayout 和 LinearLayout 的性能分析
http://www.jianshu.com/p/8a7d059da746
SonarQube
https://www.sonarqube.org/
代码质量管理平台;
Android 插件化入门
http://www.jianshu.com/p/b6d0586aab9f
Android 插件化的作用:
Android 代码混淆
https://www.cnblogs.com/renhui/p/5863199.html
http://www.cnblogs.com/renhui/p/5910300.html(Java Annotation)
使用 Js 的 WebView 都要进行代码混淆;
获取当前 Activity 实例对象
http://blog.csdn.net/vfush/article/details/51483436
Android 屏幕适配:最全面的解决方案
https://www.jianshu.com/p/ec5a1a30694b
仅收藏,暂无研究的动力;
漏洞:startForeground() 前台 Service 去掉通知显示
http://blog.csdn.net/wxx614817/article/details/50669420
Android 7.0 已经修复该漏洞;
java.util.ConcurrentModificationException
http://blog.csdn.net/aaawqqq/article/details/43884623
出现原因:集合在被迭代器迭代的同时被修改;
解决方法:
1. 迭代时用锁;
2. 先复制,再迭代;
3. Android 使用 CopyOnWriteArrayList;
深入理解 Looper,Handler,Message
http://blog.csdn.net/lmj623565791/article/details/38377229
http://blog.csdn.net/shaoenxiao/article/details/54561753
Android 生命周期 & 适合执行的操作
http://blog.csdn.net/samuel__liu/article/details/51049579
Android MVP 讲解(晓鹏)
https://rocko.xyz/2015/02/06/Android%E4%B8%AD%E7%9A%84MVP/
MVP 对应于 Android:
M:Model,V:Activity,P:Presenter
其中,Activity 持有 Presenter 的引用,Presenter 持有 Model 和 Activity 的引用;
Android MVP demo
https://github.com/iGuure/AndroidCodeHub/tree/master/AndroidArchitecture
Java 四种引用介绍
https://www.cnblogs.com/dolphin0520/p/3784171.html
ReferenceQueue 介绍
https://www.cnblogs.com/dreamroute/p/5029899.html
(读到 WeakHashMap 之前)
WeakHashMap 介绍
https://www.cnblogs.com/skywang12345/p/3311092.html
轮子:SoftMap
http://blog.csdn.net/lovoo/article/details/51302594
C++ 中指针和引用的区别
https://www.cnblogs.com/dolphin0520/archive/2011/04/03/2004869.html
(只读1.(1))
Integer i = new Integer(1);
此时内存栈中存放着引用 i,堆中存放着 Integer 对象 1:
指针 是堆中 Integer 对象 1 在内存中的地址,
引用 是栈中引用 i 或 i 的别名;
普通内部类和静态内部类的区别
http://blog.csdn.net/u012123938/article/details/46684839
普通代码块,构造代码块,静态代码块
https://www.cnblogs.com/sophine/p/3531282.html
Java 实现超时监听
http://blog.csdn.net/dailywater/article/details/19771689
方案1:使用守护线程;
方案2:使用 Future 特性(推荐);
// Android 范例代码
ExecutorService executorService = Executors.newCachedThreadPool();
Future future = executorService.submit(new TimerTask());
try {
future.get(5000, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (TimeoutException e) {
Log.d("Guu", "Time out!");
e.printStackTrace();
}
Log.d("Guu", "Finish future task!");
class TimerTask implements Callable<String> {
@Override
public String call() throws Exception {
Thread.sleep(10000);
return null;
}
}
Condition
http://blog.csdn.net/ghsau/article/details/7481142
传统的 notify() 不能指定唤醒哪一个 wait(),而 Condition 的 await() 可以唤醒特定的 signal();
Volatile
https://www.cnblogs.com/zhengbin/p/5654805.html
Volatile 的作用:
1. 保证变量对所有线程的可见性;
2. 禁止指令重排列(保证 Volatile 前后的语句相对位置不变);
HTTP 1.0/1.1/2.0
http://www.jianshu.com/p/52d86558ca57
Json 相较于 XML 的优势
https://www.zhihu.com/question/25636060