Что я могу сделать, чтобы загрузить внешние классы в приложении Android? - PullRequest
1 голос
/ 07 марта 2012

Задача

Я хочу создать приложение, которое может быть каким-то образом расширено программистами. У меня есть набор классов, которые можно расширить, которые я предоставляю в jar для программистов (хотя мне не очень нравится это решение, так как я не могу изменить API позже), а затем они могут расширить этот интерфейс и разработать их классы. Проблема начинается на этом этапе. Я хочу расширить его с помощью классов, не деятельности .

Что я знаю

Я читал об этом предмете, и люди обычно советуют использовать намерения и фильтры намерений для создания плагина для Android. Проблема в том, что эта тактика требует использования действий, и полезно запускать набор действий, которые работают как плагины внутри основного приложения. Я не хочу этого Мне нужно загрузить набор классов в начале моего приложения, которые являются внешними по отношению к основному проекту. Кроме того, я читал о ClassLoaders, но некоторые решения довольно хакерские, и я не мог найти то, что хотел для моей проблемы ...

Вопросы

Так, как я могу создать классы, которые могут быть загружены приложением в Android? И как я могу загрузить те классы, которые разрабатываются извне, в мое приложение?

1 Ответ

0 голосов
/ 21 марта 2012

Вы по-прежнему можете использовать намерения без каких-либо действий. Намерения и действия имеют мало общего друг с другом. Единственная общность заключается в том, что намерения также начинают деятельность. Вы должны быть очень уставшими от использования загрузчика классов в Android по многим причинам (в основном по соображениям безопасности). Лучше всего было бы написать «приложение-драйвер», с которым другие приложения могли бы взаимодействовать, используя какой-либо Сервис: либо сервис с намерениями, либо с помощью Messenger. Либо так, либо с помощью интерфейса AIDL (Android RPC). AIDL будет наиболее гибким (хотя и сложным для реализации?), А Intents - самым простым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...