0

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

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

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

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

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

4

1 回答 1

0

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

于 2013-06-04T13:28:50.423 回答