我想将15个图像发送到服务器,我使用json对象将这些图像转换为String,但是当我想发送它时,有些设备存在内存不足的异常,因为有一个大字符串。< / p>
我的图片越来越少320x400,我这样做:
首先,我创建一个jsonarray,每个图像都有一个对象:
for (int i = 0; i < images.size(); i++) {
Mat aux = images.get(i);
int cols = aux.cols();
int rows = aux.rows();
int elemSize = (int) aux.elemSize();
byte[] data = new byte[cols * rows * elemSize];
aux.get(0, 0, data);
String dataString = new String(Base64.encode(data, Base64.DEFAULT));
JSONObject obj = new JSONObject();
try {
obj.put("ROWS", aux.rows());
obj.put("COLS", aux.cols());
obj.put("TYPE", aux.type());
obj.put("DATA", dataString);
} catch (JSONException e) {
e.printStackTrace();
}
arrayjson.put(obj);
}
我创建了一个包含这个数组和另一个参数的json对象:
final JSONObject jsontoSend = new JSONObject();
try {
jsontoSend.put("USERNAME", user.username);
jsontoSend.put("DATE", getCurrentDateandTime());
jsontoSend.put("IMAGES", arrayjson);
jsontoSend.put("TOTALIMAGES", images.size());
} catch (JSONException e) {
e.printStackTrace();
}
最后,我尝试发送此对象:
StringEntity send = null;
try {
send = new StringEntity(jsontoSend.toString());
httpPost.setEntity(send);
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} catch (OutOfMemoryError e) {
e.printStackTrace();
return -2;
}
如何发送这个大字符串??
由于
解决方案:
我解决了这个添加我的清单文件android:largeHeap="true"
这个,android增加我的应用程序内存并运行正常