FireBase — java.lang.OutOfMemoryError

У меня проблема с Android FireBase. У меня есть коллекция изображений в кодировке base64, около 200 МБ. Я загрузил изображения с помощью одного устройства и могу видеть их на веб-сайте. Теперь с другого устройства я пытаюсь получить их, используя f.addValueEventListener(handler). В моем обработчике есть прослушиватель onDataChange, и ошибка возникает через минуту после ожидания возврата данных. Он никогда не возвращается, и я получаю эту ошибку:

02-01 17:32:04.638 24146-24220/thor.bluefinllc.com.bluefinsurveyroof E/AndroidRuntime: FATAL EXCEPTION: TubeSockReader-3
   Process: thor.bluefinllc.com.bluefinsurveyroof, PID: 24146
   java.lang.OutOfMemoryError: Failed to allocate a 21856 byte allocation with 1888 free bytes and 1888B until OOM
       at java.nio.CharBuffer.put(CharBuffer.java:501)
       at java.nio.charset.CharsetDecoder.allocateMore(CharsetDecoder.java:228)
       at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:188)
       at com.firebase.tubesock.MessageBuilderFactory$TextBuilder.decodeString(MessageBuilderFactory.java:109)
       at com.firebase.tubesock.MessageBuilderFactory$TextBuilder.appendBytes(MessageBuilderFactory.java:86)
       at com.firebase.tubesock.WebSocketReceiver.appendBytes(WebSocketReceiver.java:104)
       at com.firebase.tubesock.WebSocketReceiver.run(WebSocketReceiver.java:69)
       at com.firebase.tubesock.WebSocket.runReader(WebSocket.java:372)
       at com.firebase.tubesock.WebSocket.access$000(WebSocket.java:30)
       at com.firebase.tubesock.WebSocket$2.run(WebSocket.java:108)

person user2659261    schedule 02.02.2016    source источник
comment
Да... звучит как очень плохая идея. Хотя технически возможно хранить изображения в базе данных Firebase, это база данных JSON, и она не очень подходит для этого в масштабе. Итак: найдите хорошее решение для хранения изображений, сохраните изображения там, а затем сохраните URL-адреса в Firebase.   -  person Frank van Puffelen    schedule 02.02.2016
comment
См. stackoverflow.com/questions/35091003/ и stackoverflow.com/questions/35076473/   -  person Frank van Puffelen    schedule 02.02.2016
comment
Это очень плохо! Он отлично работал с загрузкой и даже хорошо работает с 10-20 фотографиями, но 200-300, кажется, ломают ситуацию. Я нормально перемещаю свои фотографии в файловое хранилище, но я надеюсь, что это не проблема с объемом данных, которые я пытаюсь извлечь за один раз.   -  person user2659261    schedule 03.02.2016
comment
Если вы загружаете по одному изображению за раз, у вас, скорее всего, все будет в порядке. Поскольку вы переносите данные, вы также можете рассмотреть возможность запуска обычной JVM на своем рабочем столе, которая, вероятно, имеет немного больше памяти, чем устройство Android (хотя в наши дни это не точно :-)).   -  person Frank van Puffelen    schedule 03.02.2016