我想在服务中获取 xml 并通过 AIDL 返回该 xml 字符串。今天,我意识到当这个字符串很长时,调用应用程序只会收到一个空值。我测试了一下,发现字符串长度的限制似乎是大约 520000 个字符,接近 512*1024=524288。Java在内部将字符串存储为UTF-16,我认为,但我不确定每个字符在内部(至少)两个字节大,所以这个限制是1MB。
现在,我想知道这个限制是否记录在任何地方,或者之前是否有人遇到过问题。有谁知道我如何轻松返回这么大的字符串?
现在,我想知道这个限制是否记录在任何地方,或者之前是否有人遇到过问题。
AFAIK,它没有正式记录,但是 IPC 调用的内容有 ~1MB 的限制,无论是如何完成的(AIDL、广播Intent
等)或数据是什么(字符串、位图、其他形式的字节数组等)。
有谁知道我如何轻松返回这么大的字符串?
使用文件。如果您愿意,可以通过ContentProvider
and提供文件openFile()
,将 提供Uri
给 AIDL 响应中的内容。
是的,它是有限的。
不要直接发送字符串,最好的办法是将它存储起来,SQLite
然后在需要字符串的任何地方调用它。