【问题标题】:What can I do to load external classes in an Android Application?如何在 Android 应用程序中加载外部类?
【发布时间】:2012-03-21 21:38:33
【问题描述】:

问题

我想创建一个可由程序员以某种方式扩展的应用程序。我有一组可以扩展的类,我在一个 jar 中提供给程序员(虽然我不太喜欢这个解决方案,因为我以后不能更改 API),然后他们可以扩展该接口并开发他们的课。问题从这个阶段开始。我想通过类来扩展它,不是活动

我所知道的

我一直在阅读有关该主题的文章,人们通常建议使用意图和意图过滤器来制作可插入 Android 的应用程序。问题是:这种策略需要使用活动,并且在主应用程序中启动一组作为插件工作的活动很有用。我不想要那个。我需要在我的应用程序开始时加载一组主项目外部的类。我还阅读了有关 ClassLoaders 的信息,但有些解决方案有点老套,我找不到我想要的解决问题的方法......

问题

那么如何创建可以被 Android 中的应用程序加载的类呢?以及如何将这些外部开发的类加载到我的应用程序中?

【问题讨论】:

    标签: java android plugins architecture android-intent


    【解决方案1】:

    您仍然可以在没有活动的情况下使用意图。意图和活动彼此之间几乎没有关系。唯一的共同点是意图也开始活动。由于很多原因(主要是安全原因),您应该真的厌倦了在 Android 中使用类加载器。最好的办法是编写一个“驱动程序应用程序”,其他应用程序可以使用某种服务进行交互:要么是意图服务,要么使用 Messenger。要么,要么使用 AIDL 接口(Android RPC)。 AIDL 将是最灵活的(虽然最难实现?),而 Intent 是最简单的。

    【讨论】:

    • intents 的问题是我不能从一个类中启动intents。可扩展部分是从另一个类扩展的类。我想检查所有子类并将它们嵌入到我的应用程序中。
    • 这听起来像是您想要做的——为设备上的其他软件提供接口——最好通过使用 AIDL rpc 接口来完成。它相当可扩展,但 IPC 的开销可能会或可能不会接受,具体取决于您的应用程序。
    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    相关资源
    最近更新 更多