我有一个长期运行的内容提供商,基本上它正在云端进行一些搜索&返回光标w /结果。我的问题是,取决于服务器的连接和负载。结果可能需要5-7秒才能返回。
似乎如果我使用内容提供程序进行预测搜索,它会阻止其他查询(来自同一活动),直到前一个返回。
有关如何取消提供者查询的任何建议?
我尝试过使用asyncTask&线程,无济于事。似乎我仍然在提供商(解析器)上被阻止
答案 0 :(得分:1)
也许您应该仅使用内容提供程序来访问本地SQLite DB并在服务中执行长时间的操作。
观看此视频:Google I/O 2010 - Android REST client applications。它是关于构建REST客户端应用程序,但您可以使用类似的架构来处理后台内容。
答案 1 :(得分:0)
在JellyBean中,有一个取消()内容提供者查询的新选项。
我实际上最终接受了你的建议,并重写了内容提供程序以获取光标到sqlitedb,并使用intent服务来更新数据库..工作相当不错..
我遇到了一个问题,如果提供程序被杀,客户端似乎没有得到通知,并且可以继续发送服务意图而没有响应..有两种方法来处理这个问题(在提供程序中我可以更改)要用原始uri做广播事件,光标断开连接,但这有点慢)..
我最后回答了我自己的问题,这可能有助于某人在您连接时被提供者被杀......
Content Provider w/ Cursor - Gets Killed (how to notify client)