我们正在Android中准备一个服务器客户端应用程序,我们在从我的服务器接收数据时遇到问题。
应用程序抛出内存不足异常,(Out of memory on a 57283558-byte allocation.)
尽管我largeHeap=true
在AndroidManifest.xml
.
我怀疑您正在尝试将正在下载的内容保存在内存中,这就是您获得 OOM 的原因。
如果您是 API 9 及更高版本,则可以查看DownloadManager
或尝试以下方式:
URL url = new URL("http://www.example.com/largefile.zip");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
InputStream in = new BufferedInputStream(connection.getInputStream());
FileOutputStream out = openFileOutput("largefile.zip", Activity.MODE_PRIVATE);
编辑:我瞥见了一个 60mb json 响应的提及。你真的应该重新考虑你在做什么。也许您可以使用Jackson Streaming API来解析响应并将其保存在 db 中,或者您以后可以使用的东西
60Mb 的 json 响应似乎过多。如果这实际上是您所期望的,那么您可能需要查看不同类型的响应,或者即时解析。很难说没有更多的细节......