【问题标题】:Best way of recording rapidly updating data (Android)记录快速更新数据的最佳方式 (Android)
【发布时间】:2013-05-26 17:34:57
【问题描述】:

在 Android 中记录快速更新数据的最佳方式是什么?

在我的具体示例中,我试图在(加速)onSensorChanged 触发时记录各种数据花絮,这很常见。一些快速处理和显示很好,但更多(绘图或记录数据)会使它变得相当慢。值得注意的是,我将其存储在变量中而不是归档。

建议您在 onSensorChanged 中尽可能少做,所以我尝试了以下方法:

  • IntentService 中:获取您要记录的其余数据并将其全部存储在一个变量中。 结果:即使意图服务在其自己的线程中执行,但一次只能运行一个。因此,数据进入的速度似乎比它可以处理的要快,并且最终会出现一长串要处理的数据,从而产生一个长而恒定的 GC_FOR_ALLOC 流。最终使它成为一个糟糕的选择
  • AsyncTask 中获取要记录的额外数据,然后启动IntentService 以将其记录到变量中。 结果:和上面差不多。

总体而言,这两种方法的性能实际上比仅在 onChanged 中进行额外的数据获取和记录要得多,而且消耗的功率也大大增加。我还没有找到任何关于快速数据存储的具体建议。缓冲区或缓存可能更有效吗?

【问题讨论】:

    标签: android caching onchange


    【解决方案1】:

    经过一些调试并尝试使用不同的数据结构来存储快速更新的数据,结果证明使用IntentService 效果很好。从使用 O(n) 添加新元素的 ArrayList 更改为仅使用 O(1) 将新值附加到末尾的自定义 LinkedList 产生了巨大的差异。由于 LL 能够更快地处理数据,因此需要记录的大量挂起值队列的问题基本上消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多