android - (最佳)向自定义内容提供者传递控制消息的方法

标签 android service android-activity provider

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/

相关文章:

C# - 是否可以让单个 .exe 充当应用程序(单击时)或服务(由 Windows 运行时)

android - 如果服务在另一个进程中,如何绑定(bind)服务?

Android - 启动主要设置 Activity 并不总是有效

java - 为什么android :src behaves weirdly on padding in drawable?

android - 是否可以获取操作栏中显示的菜单项数?

c# - 从另一个 Controller 调用 WebApi Controller

android - 使用 Intent 从另一个程序调用 Activity 会导致权限被拒绝

Android,是否可以在不使用谷歌云消息系统的情况下向设备广播消息?

android - 在白色背景上是否可以看到黑色进度条?

android - 没有第二个 Activity 名称的 Intent