将字符串结果从编码base64到jsonobject从内存中排除



我阅读了许多有关OOM的问题,但我仍然被困。我根本无法使用jsonObject.toString获取数组bytes。我有相机拍摄的图像,我想将其发送到服务中。我以HTTP帖子的格式发送:

{
 request : {
            image : encodedImageWithBase64
           }
}

,但我无法制作jsonobject原因OOM。此处的字符串示例来自结果编码的图像:https://pastebin.com/ruxae9vu

在这里我的摘要代码:

JSONObject requestDict = new JSONObject();
            try {
                JSONArray tempRequestDic = new JSONArray();
                JSONObject obj = new JSONObject();
                obj.put("imagedata", strEncode64);
                tempRequestDic.put(obj);
                obj.put("image", tempRequestDic);
                requestDict.put("request", obj); /* Here I get the Exception*/
//                    String strReqDict = String.valueOf(requestDict);
//                    File x = new File(String.valueOf(requestDict));
                byte[] byteBitmapDecoded = requestDict.toString().getBytes(); /* Here my apps force stop cause OOM */
            } catch (JSONException e) {
                e.printStackTrace();
            }

,日志为:

抛出Outofmemoryerror"未能分配301989896字节分配给16777216免费字节和283MB,直到OOM"

我需要此jsonobject中的 byte[],但我无法构建jsonobject。

尝试将android:hardwareAccelerated="false"android:largeHeap="true"添加到您的清单中。由于OOM是处理位图时发生的最常见错误。

<application
android:allowBackup="true"
android:hardwareAccelerated="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/AppTheme">

尝试此代码,该代码将将jsonobject转换为bytearray。

  byte[] byteBitmapDecoded = Base64.decode(requestDict.toString, Base64.DEFAULT);

相关内容

  • 没有找到相关文章

最新更新