Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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/7/jsf/5.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
Android ContentProvider与使用AIDL/Messenger_Android_Ipc_Android Contentprovider_Aidl - Fatal编程技术网

Android ContentProvider与使用AIDL/Messenger

Android ContentProvider与使用AIDL/Messenger,android,ipc,android-contentprovider,aidl,Android,Ipc,Android Contentprovider,Aidl,我想开发一个支持插件并向这些插件提供数据的应用程序。在我看来,在Android上实现这个插件架构的正确方法是主应用程序一个apk,每个插件一个apk 但是,由于主应用程序和每个插件都位于不同的APK中,我无法轻松地将数据对象从一个应用程序传递到另一个应用程序,应用程序运行在不同的进程中,即使它们运行在一个可以实现的进程中,它们也有不同的类加载器,这不起作用。目前,我看到两种很有希望的方法可以将数据从我的主应用程序传输到我的插件: 将主应用程序声明为ContentProvider。在我看来,这似乎

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

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

将主应用程序声明为ContentProvider。在我看来,这似乎是预期的方法,因为它正是我想要实现的:向另一个流程提供内容/数据。 使我的数据对象可打包,并使用AIDL或Messenger方法(如果我不需要多线程处理)推送它们。在我看来,这种方法似乎更容易,因为我可以使用一个ORM库,它关心后台的数据库。我以前从未使用过ContentProviders,但第一眼看到它时,我觉得使用ContentProvider有点像手工构建SQL查询。如果我错了,请告诉我,我希望避免这种工作! 现在我想知道我是否遗漏了任何优点或缺点,以及这两种方法之间是否存在显著的性能差异。您更喜欢哪种解决方案?为什么要这样做


提前谢谢!欢迎回复

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

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

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