Android kotlin学习总结

1 阅读2分钟

1. Coroutine协程

Android 协程简介

kotlin协程是一种并发设计模式,可以用来在Android上简化异步执行的代码。有助于管理长时间运行的任务。可实现类似RxJava效果。

特点:

  1. 轻量:可以在单线程上运行多个协程。
  2. 内存泄露少;
  3. 内置取消操作;
  4. 支持jetpack;

缺点:

  1. 本质是单线程的,无法利用多核资源;

  2. 无法避免阻塞:虽然协程可以异步处理I/O操作,但对于一些需要长时间运行的任务(如计算、网络请求等),仍然可能导致整个程序阻塞。

  3. 难以调试:由于协程的执行流程比较复杂,调试起来相对困难。

特性协程 (Coroutine)线程 (Thread)
层级与控制属于用户态,由开发者通过代码调度和控制属于内核态,由操作系统(OS)内核调度
资源开销极其轻量,占用内存仅几 KB,可同时创建数万个较为昂贵,每个线程占用约 1MB 栈内存,创建过多易导致内存溢出
切换成本极低,仅需在单个线程内切换执行流,无需系统内核介入较高,需要 CPU 从用户态切换到内核态保存/恢复上下文
挂起与阻塞遇到耗时操作时,协程会被 挂起,其所在的线程可以去执行其他协程(非阻塞)遇到阻塞操作时,整个线程被 挂起,直到条件满足才可继续,极大消耗系统资源
编码体验采用同步的方式写异步代码(如 suspend 关键字),逻辑连贯,天然避免“回调地狱”回调嵌套深,代码难以维护,常被称为“回调地狱”

 2 flow

flow 处理数据流与状态变化