我有一个长期运行的内容提供商,基本上它是在云中做一些搜索&返回一个带有结果的光标。我的问题是,这取决于服务器的连接和负载。结果可能需要5-7秒才能返回。
似乎如果我使用内容提供商进行预测搜索,它会阻止额外的查询(来自相同的活动),直到前一个返回。
对如何取消提供者查询有什么建议吗?
我尝试过使用asyncTask & Thread,但没有效果。似乎我仍然在提供商(解析器)上被阻止。
发布于 2012-05-09 06:01:08
也许您应该只使用内容提供程序来访问本地SQLite DB,并在服务中执行较长的操作。
看看这个视频:Google I/O 2010 - Android REST client applications。它是关于构建一个REST客户端应用程序,但是您可以在后台使用类似的架构。
发布于 2012-09-12 21:16:35
看起来像是在JellyBean中,有一个新的选项来取消()内容提供商查询。
实际上,我最终采纳了您的建议,并重写了内容提供程序,使光标指向sqlitedb,并使用意图服务来更新db。效果非常好..
我确实遇到了一个问题,如果提供者被杀死,客户端似乎没有得到通知,并且可以继续发送服务意图而没有响应。有几种方法可以处理这一点(在提供者中,我可以将其更改为使用原始uri进行广播事件,即光标断开连接,但这有点慢)。
我最后只是回答了我自己的问题,这可能会帮助一些人,如果一个提供者在你连接的时候被杀了……
Content Provider w/ Cursor - Gets Killed (how to notify client)
https://stackoverflow.com/questions/10504873
复制相似问题