2

我想开发一个支持插件并为这些插件提供数据的应用程序。在我看来,在 Android 上实现这个插件架构的正确方法是主应用程序一个 apk,每个插件一个 apk。

但是由于主应用程序和每个插件都在不同的 apk 中,我无法轻松地将(数据)对象从一个应用程序传递到另一个应用程序,应用程序在不同的进程中运行,即使它们在一个进程中运行(可以实现)它们有不同的类加载器,这不起作用。目前,我看到两种有前途的方法可以将数据从我的主应用程序获取到我的插件:

  1. 将主应用程序声明为ContentProvider. 在我看来,这似乎是预期的方法,因为它正是我想要实现的:向另一个进程提供内容/数据。
  2. 使用 -方法制作我的数据对象Parcelable并使用AIDL- 或 - 如果我不需要多线程 - 来推动它们Messenger。在我看来,这种方法似乎更容易,因为我可以使用关心后台数据库的 ORM 库。我以前从未使用过 ContentProviders,但乍一看,我认为使用 ContentProvider 有点像手动构建 SQL 查询(如果我错了请告诉我),我想避免这项工作!

现在我想知道我是否遗漏了任何优点或缺点,以及这两种方法之间是否存在显着的性能差异。您更喜欢哪种解决方案,为什么要这样做?

提前致谢!任何答复表示赞赏!

4

1 回答 1

5

内容提供者只是在应用程序之间共享数据(以不同方式存储[数据库、文件等])的方式。如果您只想在应用程序之间共享数据,这是最好的方法。

但是,如果您希望服务使用数据执行某些任务(例如,将您提供的几个值相加),最好有一个远程服务。

在一般情况下,应用程序-插件交互更类似于远程服务。在这种情况下,主应用程序公开了一个远程服务(此应用程序的 API),插件可以使用该服务来执行某些操作。

于 2012-03-10T11:59:15.433 回答