java - 使用其他应用程序(插件)更新应用程序信息

标签 java android plugins

我正在为 Android 制作键盘。 我愿意有一个插件结构,让用户改进预测引擎。

预测引擎是用 Android NDK 完成的,它是用 C 编写的。我有一个调用 C 代码的包装器类。此包装类的一个实例是 InputMethodService 中的一个字段。 预测引擎通过发送完整的句子来更新。像这样的东西:

public void updateEngine(String sentence);

插件应该调用该方法。 插件的示例可以是 .txt 解析器。您选择一个 txt 文件,插件将开始向主应用程序发送所有句子。 我希望插件是可定制的,例如:它们可能有一个屏幕,您可以在其中选择要发送的最大句子、在后台运行等。 UI(不知道它应该在主应用程序还是插件上,检查下面我的问题)应该有可能询问插件它可以发送多少句子(做一个进度条)。

我的问题是:

  • 我应该使用 Intents 还是 IPC?

我认为我应该使用 Intents,因为我只使用原始类型。

  • 我的操作应该是原子操作还是发送一组句子?

我愿意从原子操作开始,但我担心性能。

  • 插件必须是 Activity 还是服务?

它们应该是 Activity ,并在必要时(“后台处理”)启动服务。或者它们可能只是服务,而主应用负责 UI。

  • 谁应该保存关于最后一次执行的信息。插件还是主应用程序?

例如最后一次使用该插件是什么时候。

最佳答案

Should I use Intents or IPC?

两者都行。 Intent 可能更简单。

Should my operations be atomic or send an array of sentences?

如果可能的话,我会将它们 bundle 到一个操作中。据我了解,许多小的跨进程旅行比一次大的旅行更昂贵。

The plugins must be activities or Services?

您似乎希望插件调用引擎,这很好,但是……什么时候?插件不会在安装时自动获得控制权。插件调用引擎的触发机制的选择将决定插件是否需要 Activity 。

Who should save information about the last execution. Plugin or the mainApp?

考虑到您在这里的其他内容,这对我来说意义不大,因此我无法发表评论。这可能会回到我上面提到的缺乏触发的问题。例如,在什么情况下插件曾经会被多次使用?

关于java - 使用其他应用程序(插件)更新应用程序信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2302326/

相关文章:

Java:复合

java - 哪里有示例 JAX-RS 客户端示例?

java - 以编程方式启动 ActiveMQ 而不是作为服务

android - 如何在 Android 的 SurfaceView 中播放动画

android - Google Play 服务库更新和缺少符号 @integer/google_play_services_version

java - 不同版本的依赖支持 :design

android - expandableList 中空组的备用 View

java - 针对 Java 应用程序中的恶意代码的沙盒

plugins - 我的 nginx 模块可以在主进程中建立连接吗?

plugins - 如何创建灵活的插件架构?