解决一次时间复杂度

本问题导致多个异常现象,包括但不限于

  1. ANR
  2. 崩溃
  3. mqtt处理缓慢与异常
  4. 主线程事件堆积

场景还原

  1. 首先消息传输协议采用的是mqtt消息流式传输,消息数量并不固定
  2. 目标:每次收到连续的消息后处理已有的全部消息,并解析出恰当数据,从而向上更新到UI

正确实现

  1. 假设有n条消息,且每条消息都会稳定收到
  2. 则:从0号消息一直获取到n-1号消息后,应当一共处理n次。此时,时间复杂度是O(n)

错误实现

  1. 假设有n条消息,且每条消息都会稳定收到
  2. 则:从0号消息,再到获取n-1号消息后
  3. 获取到0号消息时:
    1. 处理0号
  4. 获取到1号消息时:
    1. 处理0号
    2. 处理0,1号
  5. 获取到2号消息时:
    1. 处理0号
    2. 处理0,1号
    3. 处理0,1,2号
  6. 获取到3次消息时:
    1. 处理0号
    2. 处理0,1号
    3. 处理0,1,2号
    4. 处理0,1,2,3号
  7. 此时,时间复杂度是O(n²)