Android 哪一种性能要求较低—通过Intent传递捆绑包或使用内容提供商

Android 哪一种性能要求较低—通过Intent传递捆绑包或使用内容提供商,android,performance,android-intent,android-contentprovider,Android,Performance,Android Intent,Android Contentprovider,我想在Android中的两个应用程序之间传递相当大的数据量(~1500字节),性能和资源分配是一个优先事项。数据基本上是键值对。它需要从一个应用程序传递到另一个应用程序的速率可以在一秒钟内从涓涓流到大约50个数据包不等。我想我可以: 将所有数据包装在一个捆绑包中,并通过意图将捆绑包从一个应用程序传递到另一个应用程序。我担心分配和取消分配所有内存以存储捆绑包的性能影响 将所有数据写入SQLite数据库,并通过内容提供者将其提供给其他应用程序。在这里,我担心的是将所有数据写入磁盘,然后在请求时必须从

我想在Android中的两个应用程序之间传递相当大的数据量(~1500字节),性能和资源分配是一个优先事项。数据基本上是键值对。它需要从一个应用程序传递到另一个应用程序的速率可以在一秒钟内从涓涓流到大约50个数据包不等。我想我可以:

  • 将所有数据包装在一个捆绑包中,并通过意图将捆绑包从一个应用程序传递到另一个应用程序。我担心分配和取消分配所有内存以存储捆绑包的性能影响

  • 将所有数据写入SQLite数据库,并通过内容提供者将其提供给其他应用程序。在这里,我担心的是将所有数据写入磁盘,然后在请求时必须从磁盘读回这些数据的性能影响


  • 那么,两害相权取其轻呢?

    考虑使用服务连接。在设置初始连接时需要付出一些开销,但在这之后,可以使用类似RPC的接口进行方法调用(在任意方向传递可包裹的结构),开销很小(远低于毫秒)。有关详细信息,请参见。

    从一个应用程序传递到另一个应用程序的速率可能会有所不同
    如果您依赖某个应用程序以特定速率向您提供数据,那么这听起来像是一个糟糕的设计。我不依赖该应用程序以特定速率向我提供数据。我无法控制速率,但我将这些信息放在那里,以便大致了解我需要以何种速率为数据提供服务。这可能是最好的答案-AIDL速度非常快-但与包裹相关的开销仍然很大(单独来说,每个交换都很小,但总的来说,所有的分配和序列化都有很大的影响),但我想这是没有办法的。最终,它打败了sql数据库和内容提供商。