Я делаю клавиатуру для Android.
Я хочу иметь структуру плагинов, которая позволит пользователям улучшать механизм прогнозирования.
Механизм прогнозирования сделан с помощью Android NDK и был закодирован на C. У меня есть класс-обертка, который вызывает код C. Экземпляр этого класса-оболочки представляет собой поле в InputMethodService.
Механизм прогнозирования обновляется путем отправки полных предложений. Что-то вроде:
public void updateEngine(String sentence);
Плагины должны вызывать этот метод.
Примером плагина может быть анализатор .txt. Вы выбираете текстовый файл, и плагин начнет отправлять в основное приложение все предложения.
Я хотел бы, чтобы плагины были настраиваемыми, например: они могли бы иметь экран, на котором вы можете выбрать максимальное предложение для отправки, для запуска в фоновом режиме и т. Д.
Пользовательский интерфейс (не знаю, должен ли он быть в основном приложении или плагине, проверьте мои вопросы ниже) должен иметь возможность спросить плагин, сколько предложений он может отправить (для выполнения индикатора выполнения).
Мои вопросы:
- Должен ли я использовать Intents или IPC?
Я думаю, что я должен использовать Intents, поскольку я просто использую примитивные типы.
- Должны ли мои операции быть атомарными или отправлять массив предложений?
Я готов начать с атомарных операций, но я беспокоюсь о производительности.
- Плагины должны быть активны или Сервисы?
Это должны быть действия и при необходимости («процесс в фоновом режиме») запуск службы. Или, может быть, они просто сервисы, а основное приложение заботится об интерфейсе пользователя.
- Кто должен сохранять информацию о последнем исполнении. Плагин или главное приложение?
например. Когда в последний раз плагин использовался.