记录快速更新数据的最佳方式(Android)

时间:2013-05-26 17:34:58

标签: android caching onchange

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

在我的具体例子中,我试图记录各种数据花絮,只要(加速)onSensorChanged就会发生火灾。这对于一些快速处理和显示来说很好,但是更多(绘制或记录数据)使它变得相当慢。值得注意的是,我将它存储在变量而不是文件中。

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

  • IntentService中:获取要记录的其余数据,并将其全部存储在变量中。 结果:即使意图服务在自己的线程中执行,也只能运行一个。因此,数据似乎比处理数据更快,最终需要处理一长串数据,从而提供长而稳定的GC_FOR_ALLOC流。最终使它成为一个糟糕的选择
  • AsyncTask中获取您要记录的额外数据,然后启动IntentService以将其记录到变量中。 结果:与上面几乎相同。

总体而言,这两种方法实际上都显着更差,而不仅仅是在onChanged中进行额外的数据提取和记录,以及消耗更多的功率。我无法找到有关快速数据存储的任何具体建议。缓冲区或缓存可能更有效吗?

1 个答案:

答案 0 :(得分:0)

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