Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android应用程序中加载外部类?_Java_Android_Plugins_Architecture_Android Intent - Fatal编程技术网

Java 如何在Android应用程序中加载外部类?

Java 如何在Android应用程序中加载外部类?,java,android,plugins,architecture,android-intent,Java,Android,Plugins,Architecture,Android Intent,问题 我想创建一个可以由程序员以某种方式扩展的应用程序。我有一组可以扩展的类,我在jar中提供给程序员(尽管我不太喜欢这个解决方案,因为我以后不能更改API),然后他们可以扩展接口并开发他们的类。问题从这个阶段开始。我想通过课堂而不是活动来扩展它 我所知道的 我一直在读关于这个主题的文章,人们通常建议使用意图和意图过滤器来实现android可插入应用程序。问题是:这种策略需要使用活动,在主应用程序中启动一组作为插件工作的活动非常有用。我不想那样。我需要在应用程序开始时加载一组主项目外部的类。我也

问题

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

我所知道的

我一直在读关于这个主题的文章,人们通常建议使用意图和意图过滤器来实现android可插入应用程序。问题是:这种策略需要使用活动,在主应用程序中启动一组作为插件工作的活动非常有用。我不想那样。我需要在应用程序开始时加载一组主项目外部的类。我也读过关于类加载器的书,但是有些解决方案有点不成熟,我找不到我想要的解决问题的方法

问题


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

您仍然可以使用意图而不需要活动。意图和活动之间几乎没有关系。唯一的共同点是意图也开始活动。由于很多原因(主要是安全原因),您应该对在Android中使用类加载器感到厌倦。最好的办法是编写一个“驱动程序应用程序”,其他应用程序可以使用某种服务(intent Service或Messenger)与之交互。或者使用AIDL接口(Android RPC)。AIDL将是最灵活的(尽管最难实现?),意图是最简单的。

意图的问题是我不能从类启动意图。可扩展部分是从另一个类扩展而来的类。我想检查所有的子类并将它们嵌入到我的应用程序中。听起来你想要做的事情——为设备上的其他软件提供一个接口——最好使用AIDL rpc接口来完成。这是相当合理的,但是IPC的开销可能是可以接受的,也可能是不可以接受的,这取决于您的应用程序。