Bitmap / uso de Canvas y el NDK

Recientemente descubrí que no hay un límite estricto para la cantidad de memoria que el código NDK puede asignar en contraste con la cantidad muy limitada de memoria (~ 25Mb en la mayoría de los dispositivos) que puede asignar en el lado de Java.

Quiero escribir una aplicación de procesamiento de imágenes (algo así como Photoshop) que necesita mantener varios mapas de bits grandes en la memoria a la vez, donde los datos del mapa de bits ocuparán ~ 20Mb de memoria. Hacer esto en Java hace que la aplicación sea propensa a las excepciones de falta de memoria en muchos dispositivos que he probado.

Todo mi código actual hace uso de la clase Bitmap y Canvas para hacer mis manipulaciones de imagen.¿Alguien puede sugerir alguna forma que me permita asignar la mayor parte de mi memoria en el lado C y aún así usar Bitmap + Canvas para realizar mis operaciones de dibujo (usando Android 2.1 y superior)?

Como ejemplo, si mi imagen está compuesta de 6 capas de mapa de bits y el usuario está pintando en la tercera capa, necesito dibujar un mapa de bits de blob de pintura en la tercera capa y luego actualizar la pantalla para mostrar el resultado de aplanar todas las capas en la parte superior el uno del otro en tiempo real. He considerado algo en la línea de asignar mis 6 mapas de bits en C como matrices int y realizar la operación de pintura en el lado de Java con Canvas utilizando una copia de la capa que se está editando almacenada en un objeto de mapa de bits. Sin embargo, no estoy seguro de cómo va a funcionar la etapa de aplanamiento.

Respuestas a la pregunta(1)

Su respuesta a la pregunta