0

Androidで急速に更新されるデータを記録する最良の方法は何ですか?

私の特定の例では、(加速)onSensorChangedが発生するたびに、さまざまなデータのちょっとした情報を記録しようとしています。いくつかの迅速な処理と表示には問題ありませんが、それ以上 (データのプロットまたは記録) はかなり遅くなります。ファイルではなく変数に保存していることに注意してください。

onSensorChanged ではできる限り少ないことをお勧めします。そのため、次のことを試しました。

  • : 記録する残りのデータを取得し、そのIntentServiceすべてを変数に格納します。結果: インテント サービスは独自のスレッドで実行されますが、一度に実行できるのは 1 つだけです。そのため、データは処理されるよりも早く到着するように見え、処理されるデータのキューが長くなり、GC_FOR_ALLOC の長く一定したストリームが発生します。最終的にそれを悪い選択にする
  • AsyncTask記録したい余分なデータをフェッチしてから、それを変数に記録するために を開始しIntentServiceます。 結果: 上記とほとんど同じです。

全体として、これらの方法は両方とも、onChanged で余分なデータのフェッチと記録を行うだけでなく、大幅に多くの電力を消費するよりも実際には大幅にパフォーマンスが低下していました。高速データ ストレージに関する具体的なアドバイスを見つけることができませんでした。おそらくバッファまたはキャッシュの方が効率的でしょうか?

4

1 に答える 1

0

いくつかのデバッグを行い、急速に更新されるデータを格納するためにさまざまなデータ構造を使用しようとした結果、 を使用するとIntentServiceかなりうまく機能することがわかりました。ArrayList新しい要素を追加するための O(n) から、LinkedListO(1) で新しい値を末尾に追加するだけのカスタムに変更すると、大きな違いが生じました。LL はデータを非常に迅速に処理できるため、記録する保留中の値の巨大なキューの問題は基本的に解消されます。

于 2013-06-04T13:28:50.423 に答える