扫描信标并根据距离重新排序



我的Android应用程序使用了在一个单例类中实现的AltBeacon库,它扫描预定义区域中的信标并将它们存储为静态列表。在我app的一个活动中,我有一个链接到信标的所有项目的列表我希望这个列表根据最近的信标继续重新排序。我如何做到这一点,因为我已经使用比较器实现并实现了这一点,但是我想使用更明智的性能方面的东西,例如侦听器。

现在,我正在做下面的事情:

  1. 每x秒扫描一次信标,并将结果作为集合
  2. 将它们存储在新列表
  3. 使用Collections.sort
  4. 根据距离对列表进行排序
  5. 遍历此列表并将每个信标的id发送到服务器以获取更多链接到它的内容。
  6. 一旦迭代完成,我通知RecyclerView适配器
  7. 这时,已经是时候再做第一步了。

每次对列表进行排序并没有什么错。对于每个扫描周期,典型的替代方法是将记录插入/更新到一个自动维护排序顺序的集合中。但是,由于范围内的信标在每个扫描周期中都会略微改变它们的估计距离,因此无论如何,代码每次都会有效地进行一次完整的重新排序。底线:你当前排序的方式可能是可以的。

也就是说,第4项本身可能就是一个问题。与排序等内存操作相比,将数据发送到服务器既耗时又耗费资源。你真的需要每个周期都这样做吗?无论这种情况发生的频率有多高(应该尽可能少),我都会将发送到服务器的任务转移到不同的线程,这样就不会减慢UI更新的速度。

相关内容

  • 没有找到相关文章

最新更新