2016-11-07 5 views
0

私のAndroidアプリケーションは、事前定義された領域のビーコンをスキャンして静的リストとして保存するシングルトンクラスで実装されたAltBeaconライブラリを使用します。私のアプリケーションの活動の一つでは、私はビーコンにリンクされたすべてのアイテムのリストを持っています、そして、私は基本的にこのビーコンが最も近いものに基づいて並べ替えることを続けたいと思います。どのようにしてこれを行うことができますか?私はすでに比較器の実装を使用しており、これを達成していますが、リスナーのような、より賢明なパフォーマンス賢明なものを使用したいと思います。距離に基づいてビーコンと並べ替えリストをスキャンする

は今のところ、私は次のことをやっている:

  1. ビーコンのスキャンx秒ごとに、新たなリスト
  2. ソートにコレクションとして結果
  3. ストアそれらを取得し、このリストに基づきます距離をCollections.sortを使用して
  4. このリストを繰り返して、各ビーコンのIDをサーバーに送信して、それにリンクされたより多くのコンテンツを取得します。
  5. 繰り返しが完了したら、RecyclerViewアダプタに通知します
  6. これまでにもう一度手順1を実行してください。

答えて

1

毎回リストを並べ替えるのは間違いありません。各スキャンサイクルでそれを使用する典型的な代替方法は、ソート順を自動的に維持するコレクションにレコードを挿入/更新することです。しかし、範囲内のビーコンは、各スキャンサイクルごとに推定距離をわずかに変化させるので、コードは効果的に毎回完全な並べ替えを行うことになります。結論:現在、ソートを行っている方法はおそらくOKです。

つまり、項目4はすべて問題である可能性があります。サーバーへのデータの送信は、ソートなどのメモリ内操作と比較して時間がかかり、リソースが大量に消費されます。このサイクルごとにこれを本当に行う必要がありますか?これがどのくらいの頻度で行われるか(できるだけ少なくすべきである)にかかわらず、私はUIへの更新を遅くしないように、サーバーへの送信を別のスレッドにオフロードします。

関連する問題