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

时间:2016-11-07 06:43:00

标签: android android-recyclerview listener ibeacon altbeacon

我的Android应用程序使用在单个类中实现的AltBeacon库,该类扫描预定义区域中的信标并将其存储为静态列表。在我的应用程序的一个活动中,我有一个链接到信标的所有项目的列表,我基本上希望此列表继续根据哪个信标最接近重新排序。我怎么能看到我已经在使用比较器实现并实现这一目标但我想使用一些更明智的性能,比如听众。

现在,我正在做以下事情:

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

1 个答案:

答案 0 :(得分:1)

每次排序列表都没有什么问题。在每个扫描周期中采用它的典型替代方法是将记录插入/更新到自动维护排序顺序的集合中。但是,由于范围内的信标将在每个扫描周期中稍微改变它们的估计距离,因此代码每次都会有效地进行完全重新排序。一句话:您目前正在进行排序的方式可能还不错。

也就是说,第4项可能本身就是一个问题。与诸如排序之类的内存中操作相比,将数据发送到服务器是耗时且资源密集的。你真的需要在每个周期都这样做吗?无论这种情况多久发生一次(它应该尽可能少),我会将发送到服务器的权限卸载到另一个线程,这样就不会减慢UI更新的速度。