У меня есть приложение, в котором я генерирую много объектов Bitmap. Как только я создам растровое изображение, все остальные растровые изображения будут одинакового размера.Самый быстрый способ загрузки растрового изображения, повторного использования растрового изображения после создания
В настоящее время я могу загрузить/создать новое растровое изображение примерно на 50-80 мс на моем телефоне, которое работает для того, что мне нужно. Однако из-за быстрых темпов их создания я нахожу постоянный GC.
Я хотел бы повторно использовать один и тот же объект растрового изображения, но не уверен, как это сделать через sdk.
Я выполнил сборку libjpeg и загрузил изображения через NDK и повторно использовал мои растровые изображения, однако моя скорость загрузки упала примерно до 200 мс, что слишком медленно. Я отправлю код позже, когда у меня его передо мной.
Вопросы:
Есть ли способ, чтобы повторно использовать свои растровые объекты, чтобы избежать GC? Есть ли более быстрый способ загрузить мои изображения через NDK? Можно ли подключиться к тому, как ОС загружает растровые изображения? Я знаю о libjpegTurbo, но я не могу его компилировать в настоящее время (другая тема для другого дня).
Любые другие мысли о наилучшем способе сделать это.
Я создаю около 20 битмапов в секунду, поэтому я не могу хранить их в памяти. У меня на самом деле есть фоновый поток, заполняющий очередь, из которой я вынимаю новые растровые изображения. Большая проблема заключается в моем фоновом потоке вместо создания новых объектов растровых изображений, я хотел бы извлечь из пула растровых изображений и просто повторно использовать их, чтобы у меня не было столько GC. – broschb
@broschb Если вы не можете сохранить их в памяти, то как их можно повторно использовать? Вы понимаете, что это не имеет смысла? Если у вас есть ограничения по памяти, лучшим решением для этого является реализация кэша изображений с использованием хэш-карты и очереди, а затем, когда вы достигнете определенного ограничения на количество растровых изображений, загружаемых для удаления старых растровых изображений из очереди и намека на GC, что они должны быть очищены из памяти. Хешмап будет использоваться для определения того, находится ли растровое изображение в очереди и его местоположении. – onit
Я могу повторно использовать растровое изображение, изменив данные пикселя растрового изображения, с новыми данными пикселя из другого растрового изображения. См. Ответ @Samuels, я думаю, что это по треку, о котором я думаю. – broschb