我正在为 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/