3月29日 周一
一 Kotlin语法
-
内联函数修饰inline的使用场景和优点
-
修饰符internal的使用,以及Java和Kotlin修饰符的区别
-
.filter和.map的使用
List.filter{
**it过滤条件 Boolean类型**
}.map{
**NewItem()成为新的list成员**
}
的使用: 过滤和map构建新的list
二 数据结构
1.SparseArray数据结构的特点
三 协程
1.协程的概念:(视频7-1进阶)
- (1)协程和进程的关系,孰优孰劣
- (2)协程的关键:挂起supend和恢复
- (3)UI线程发生非阻塞挂起,是无碍的
3-30 周二
放置webView发生内存泄露的一些预防策略:
- 不要在xml中定义webview,为webview创建一个ViewGroup坑位, 当ViewGroup销毁时,在onDestroy中先remove掉该webView,然后再 调用mWebView.destroy()
3-31 周三
一 端上ANR引发的思考
- ANR -> 线程不能正常执行:
-
(1)"main"线程被挂起(suspend) 复现途径一:可以debug断点复现
-
(2)"main"线程被阻塞(enblocked) 复现途径一(可能描述不够准确):preference在向硬盘中xx_pref.xml文件持久化数据时,是按队列的方式执行,如果一次存储数据量过大,会导致ui线程等待过久(>5s)导致ANR 注: 如何阻塞线程:当线程遇到synchronized,拿不到锁时,就会被阻塞。
- 线程的状态定义有些混乱不统一? Thread中定义了6个线程状态的枚举值: NEW RUNNABLE TERMINSTE WAIT TIME_WAIT ENBLOCKED 我们常提到的suspend状态是RUNNABLE的一种
4-2 周五
1. Java线程池
线程池的生命周期,构建线程池ThreadPoolExector的6个参数的含义:反思这6个参数表达了制定者意图要实现的策略是什么?
2. Kotlin语法
今天需求开发中使用到的Kotlin的闭包:
fun <T> T.XXXFun(block : T.() -> Int) : Y{
val result : Int = block.invoke()
return Y()
}
3. Kotlin数据结构性能
使用Kotlin:@IntDef()限定取值域和使用enum的区别
4. @注解
注解@SerialName(value=name,altername="")
在反序列化中发挥的作用?
5. 新UI框架
JetPack componse新框架的声明式UI开发?(今天看了概念简介,看上去和Flutter差不多,我更关注它对性能可以有多少提升?)
6. 数据结构相关策略
支持优先级队列的实现方案 :
- ProityBlockQuene
- TreeSet 试着写出demo