我正在下载的视频文件大于 Android 应用程序提供的内存空间。当它们在设备上时,MediaPlayer 可以很好地处理它们,因此它们的整体大小不是问题。问题是,如果它们超过了 byte[] 可以达到的相对较小的兆字节数,那么当我下载它们时,我会得到可怕的 OutOfMemory 异常。
我的预期解决方案是将传入的字节流直接写入 SD 卡,但是,我使用的是 Apache Commons 库,我这样做的方式是在将整个视频交还给我之前尝试读取整个视频.
我的代码如下所示:
HttpClient client = new HttpClient();
PostMethod filePost = new PostMethod(URL_PATH);
client.setConnectionTimeout(timeout);
byte [] ret ;
try{
if(nvpArray != null)
filePost.setRequestBody(nvpArray);
}catch(Exception e){
Log.d(TAG, "download failed: " + e.toString());
}
try{
responseCode = client.executeMethod(filePost);
Log.d(TAG,"statusCode>>>" + responseCode);
ret = filePost.getResponseBody();
....
我很好奇另一种方法是一次获取一个字节的字节流,然后将其写入磁盘。