0

我有一个长期运行的内容提供程序,基本上它在云中进行一些搜索并返回带有结果的光标。我的问题是取决于服务器的连接和负载。结果可能需要 5-7 秒才能返回。

似乎如果我使用 Content Provider 进行预测搜索,它会阻止其他查询(来自同一活动),直到前一个查询返回。

有关如何取消提供者查询的任何建议?

我曾尝试使用 asyncTask & Thread,但无济于事。看来我仍然在提供程序(解析器)上被阻止

4

2 回答 2

1

也许您应该仅将内容提供程序用于访问本地 SQLite DB 并在服务中执行长时间操作。

观看此视频:Google I/O 2010 - Android REST 客户端应用程序。它是关于构建一个 REST 客户端应用程序,但您可以将类似的体系结构用于背景内容。

于 2012-05-08T22:01:07.893 回答
0

看起来在 JellyBean 中,有一个新选项可以取消()内容提供程序查询。

实际上,我最终接受了您的建议,并重写了内容提供程序以将光标移至 sqlitedb,并使用意图服务来更新数据库 .. 工作得非常好..

我确实遇到了一个问题,如果提供者被杀死,客户端似乎没有收到通知,并且可以继续发送服务意图而没有响应。有几种方法来处理这个问题(在提供者中,我可以改变它来做带有原始 uri 的广播事件,光标已断开连接,但这有点慢)..

我最终只是回答了我自己的问题,如果在您连接时提供者被杀死,这可能会对某人有所帮助......

带光标的内容提供者 - 被杀死(如何通知客户端)

于 2012-09-12T13:16:34.697 回答