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