日常一周:3月29日 -> 4月4日

104 阅读2分钟

3月29日 周一

一 Kotlin语法

  1. 内联函数修饰inline的使用场景和优点

  2. 修饰符internal的使用,以及Java和Kotlin修饰符的区别

  3. .filter和.map的使用

List.filter{
   **it过滤条件 Boolean类型**
}.map{
   **NewItem()成为新的list成员** 
}

的使用: 过滤和map构建新的list

二 数据结构

1.SparseArray数据结构的特点

三 协程

1.协程的概念:(视频7-1进阶)

  • (1)协程和进程的关系,孰优孰劣
  • (2)协程的关键:挂起supend和恢复
  • (3)UI线程发生非阻塞挂起,是无碍的

3-30 周二

放置webView发生内存泄露的一些预防策略:

  1. 不要在xml中定义webview,为webview创建一个ViewGroup坑位, 当ViewGroup销毁时,在onDestroy中先remove掉该webView,然后再 调用mWebView.destroy()

3-31 周三

一 端上ANR引发的思考

  1. ANR -> 线程不能正常执行:
  • (1)"main"线程被挂起(suspend) 复现途径一:可以debug断点复现

  • (2)"main"线程被阻塞(enblocked) 复现途径一(可能描述不够准确):preference在向硬盘中xx_pref.xml文件持久化数据时,是按队列的方式执行,如果一次存储数据量过大,会导致ui线程等待过久(>5s)导致ANR 注: 如何阻塞线程:当线程遇到synchronized,拿不到锁时,就会被阻塞。


  1. 线程的状态定义有些混乱不统一? 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