android 内容提供者有针对一般嫌疑人的方法 {insert, delete, query, update} 但如果我想发送控制消息,则没有明显的机制。 假设由 管理的其中一个表需要重置、清除和重新加载。 如何才能做到这一点?我有几种方法,每种方法似乎都有些老套。
1) 为作业创建一个 Activity (或服务/接收器)。
该 Activity 执行批量删除和插入。
这似乎是最简单的,但是当内容提供者启动时,数据库助手会创建表并对其进行初始化。
在内容提供者的数据库助手和单独的 Activity 中复制初始化代码似乎效率低下。
2) 劫持内容提供者api。 可以创建一个虚拟表,其中插入(或更新/查询/删除)方法将调用其他不可访问的方法。
3) 使用多重继承使内容提供者也是一个服务(或 Activity )。 这可能最接近我想要的,但我不知道该怎么做。 感觉很危险,尤其是当它是一项 Activity 时。
4) 有一个服务内容提供者对 与 (3) 类似,但希望没有缺点。 该服务将有助于完成所有控制类型的事情。 例如,加载查找表,清除表,清除过期的元组,...... 如果这样做了,该服务将如何启动?由内容提供商?
最佳答案
3) 在 Java 中是不可能的。
4) 将简单地转储 ContentProvider
并使用服务提供的 API。
可能还有:
5) 让 ContentProvider
通过 getContext().registerReceiver()
注册一个 BroadcastReceiver
,并为不同的操作发送广播给它
我还没有尝试过,但假设 getContext()
返回的 Context
支持它,它应该可以工作。
关于android - (最佳)向自定义内容提供者传递控制消息的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3873214/