如何通过AIDL从服务返回大字符串?

时间:2012-04-15 00:10:21

标签: android aidl

我想在服务中获取xml并通过AIDL返回该xml-string。今天,我意识到当这个字符串非常长时,调用应用程序只接收一个空值。我测试了一下,发现,字符串长度的限制似乎是大约520000个字符,接近512 * 1024 = 524288。 Java在内部将字符串存储为UTF-16,我认为,但我不确定,每个字符在内部(至少)两个字节大,所以此限制为1MB。

现在,我想知道这个限制是否记录在任何地方,或者是否有人之前遇到过问题。有谁知道我怎么能轻易地回复这么大的字符串?

2 个答案:

答案 0 :(得分:1)

  

现在,我想知道这个限制是否记录在任何地方,或者是否有人之前遇到过问题。

AFAIK,它没有正式记录,但无论如何完成(AIDL,广播Intent等)或数据是什么,IPC呼叫的内容都有~1MB的限制。 (字符串,位图,其他形式的字节数组等)。

  

有谁知道我怎么能轻易归还这么大的字符串?

使用文件。如果您愿意,请通过ContentProvideropenFile()投放该文件,并将Uri提供给AIDL回复中的内容。

答案 1 :(得分:0)

是的,它是有限的。

不要直接发送字符串,最好的办法是将它存储在SQLite中,然后在需要字符串的任何地方调用它。