我观看了 virgil 的 android rest google io 视频并尝试实现它。
简而言之,这就是问题所在,但请继续阅读以了解详细信息。
ContentResolver query -> Content Provider Query -> 启动数据库更新服务,进行查询,返回游标
服务->更新数据库->广播数据库更新
活动 -> 注册广播 -> 接收 Contentresolver 查询。(我们回到了起点)
这变成了一个无限循环。
在我的内容提供者中,用于查询方法。我启动使用其余服务的 Intent 服务。然后查询方法查询本地数据库并返回游标。在意图服务的 onhandle() 方法中,我从 Web 服务检索新内容并写入数据库。然后我发送一个带有动作的本地广播。
在我的活动中,我注册了广播和 onreceive()。我调用 contentresolver.query 从数据库中获取新内容。这显然造成了一个循环问题。我回到内容提供商查询..服务..广播。
我希望能够在收到广播后停止广播。
我该如何解决这个问题。我应该使用 SQLitedatabase 查询而不是内容解析器吗?还是我应该以不同的方式发送广播。我可以发送另一个带有内容解析器查询的参数,例如广播后更新打开和关闭吗?我应该派生内容解析器并创建自定义查询方法吗?