【问题标题】:(best) Ways to deliver control messages to custom content provider(最佳)将控制消息传递给自定义内容提供者的方法
【发布时间】:2010-10-06 13:56:31
【问题描述】:

android 内容提供程序有用于正常嫌疑人的方法{插入、删除、查询、更新},但如果我想发送控制消息,则没有明显的机制。 假设需要重置、清除和重新加载需要管理的表之一。 如何才能做到这一点?我有几种方法,它们中的每一种似乎都有些老套。

1) 为作业创建一个活动(或服务/接收器)。 该活动执行批量删除和插入。 这似乎是最简单的,但是当内容提供者启动时,数据库助手会创建表并初始化它们。
在内容提供者的数据库助手和单独的活动中复制初始化代码似乎效率低下。

2) 劫持内容提供者 api。 可以创建一个虚拟表,其中插入(或更新/查询/删除)方法将调用其他无法访问的方法。

3) 使用多重继承使内容提供者也成为服务(或活动)。 这可能最接近我想要的,但我不知道该怎么做。 感觉很危险,尤其是当它是一项活动时。

4) 有一个服务内容提供者对 类似于(3),但希望没有疣。 该服务将有助于完成所有控制类型的事情。 例如,加载查找表、清除表、清除过期元组、... 如果这样做了,服务将如何启动?由内容提供者提供?

【问题讨论】:

    标签: android service android-activity provider


    【解决方案1】:

    3) 在 Java 中是不可能的。

    4) 将简单地转储 ContentProvider 并使用服务提供的 API。

    可能还有:

    5) 让ContentProvider 通过getContext().registerReceiver() 注册一个BroadcastReceiver,并向其发送广播以进行不同的操作

    我没有尝试过,但假设 getContext() 返回的 Context 支持它,它应该可以工作。

    【讨论】:

    • @phreed:甜蜜!我知道交给BroadcastReceiverContext 的功能有限,所以我担心交给ContentProvider 的那个可能有类似的问题。很高兴听到它对您有用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    相关资源
    最近更新 更多