android内容提供程序具有正常嫌疑人{插入,删除,查询,更新}的方法但是如果我想发送控制消息则没有明显的机制。 假设需要重置,清除和重新加载需要管理的其中一个表。 如何才能做到这一点?我有几种方法,每种方法看起来都有点hackish。
1)为作业创建活动(或服务/接收者)。 该活动执行批量删除和插入。 这看起来似乎是最少的hackish,但是当内容提供者启动时,数据库助手会创建表并初始化它们 在内容提供程序的数据库帮助程序和单独的活动中复制初始化代码似乎效率低下。
2)劫持内容提供商api。 可以创建一个虚表,其中insert(或update / query / delete)方法将调用其他无法访问的方法。
3)使用多重继承使内容提供者也成为服务(或活动)。 这可能与我想要的最接近,但我不知道该怎么做。 这感觉很危险,特别是如果它是一项活动。
4)拥有服务内容提供者对 类似于(3),但希望没有疣。 该服务可以帮助您完成所有控件类型的操作。 例如,加载查找表,清除表,清除过期的元组,...... 如果这样做了,服务将如何启动服务?内容提供商?
答案 0 :(得分:1)
3)在Java中是不可能的。
4)只需转储ContentProvider
并使用服务提供的API。
可能还有:
5)让ContentProvider
通过BroadcastReceiver
注册getContext().registerReceiver()
,然后向其发送广播以进行不同的操作
我没有尝试过,但假设Context
返回的getContext()
支持它,它应该有效。