【问题标题】:Passing a cursor to a service将光标传递给服务
【发布时间】:2012-01-24 21:35:12
【问题描述】:

我有一个可能很大的列表视图(超过 10k 项)。当用户单击列表中的某个项目时,我会在需要光标才能访问整个列表的服务中执行操作。由于我无法通过活动中的 Intent 传递光标,因此我只需将所选项目的 id 发送到服务,然后根据此 id 重新查询数据库。但是,由于这是一个包含大量数据的复杂查询,因此可能需要一段时间。将这个游标放在 Parseable 类中而不是重新查询数据库会更快吗?然后我可以将 Intent 中的可解析类传递给 Activity。

谢谢

【问题讨论】:

  • 这项服务与您的活动有什么关系?您是否希望它们都在同一个进程中运行?
  • 是的,它们都将在同一个进程中运行。基本上,Service 接受来自 Activity 的光标并对光标进行一些处理。

标签: android sqlite cursor


【解决方案1】:

您可以使用游标窗口从游标中打包数据。如果您不进行任何写操作:

CursorWindow window = new CursorWindow("MY_CURSOR_WINDOW");

cursor.fillWindow(0, window);

intent.putExtra(String name, window);

如果你想做写操作,那么你需要查询并获取一个游标,因为游标窗口缓存数据而没有别的。

http://developer.android.com/reference/android/database/CursorWindow.html

干杯。

【讨论】:

  • 这个是不是遍历整个集合,在传递的时候对数据进行序列化+反序列化?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 2013-08-08
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多