繁体   English   中英

ContentProvider和Binder IPC

[英]ContentProvider and Binder IPC

我对内容提供商有疑问。.我们知道活页夹无法传输大量数据(〜> 3MB),但是即使内容提供者也使用活页夹IPC权利,可能涉及> 3 MB的传输? 还是内容提供者直接在调用者进程的内存空间中读取数据库,并且不涉及IPC?

请更正我的理解。

在最低级别上,内容提供者使用基于共享内存(ashmem)的CursorWindows。

查看AOSP源文件frameworks/base/libs/androidfw/CursorWindow.cpp ,最低级别的C ++代码似乎没有对共享内存大小施加任何限制,但从系统级别的ashmem和mmap服务继承的代码除外。

下一个代码层frameworks/base/core/jni/android_database_CursorWindow.cpp似乎也没有对游标窗口大小施加任何限制。

Java代码frameworks/base/core/java/android/database/CursorWindow.java从Android框架内部配置值config_cursorWindowSize读取缓冲区大小,默认情况下,该值至少在KitKat中为2048。 因此,在KitKat中,如果使用常规Java接口,则最大CursorWindow大小为2 Mb。 但是,如果直接使用C ++通过AOSP标头使用androidfw/CursorWindow.h ,则可以使用更大的CursorWindows。 (请注意,仅使用NDK是不够的,因为CursorWindow并非NDK API的一部分。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM