Tengo una lista de 3 Mat
Opencv
objetos, que necesita para pasar esta lista de una actividad a otro en Android
.
No tengo ni idea de cómo compartir la lista de las Esteras entre las actividades, por lo que he convertido esos Mat
objetos en mapas de bits y ahora tengo que lidiar con mapas de bits.
Sé que Bitmap
implementa la clase Parcelable
por defecto, así que utiliza putParcelableArrayList
como esto
Intent intent = new Intent(InputProcessingActivity.this, CompareActivity.class);
intent.putParcelableArrayListExtra("", mats);
startActivity(intent);
Pero mi Application
oscuro y se mantiene así, creo que esto sólo se convertirá en que está sucediendo porque los objetos de mapa de bits son demasiado grandes.
¿Puede sugerir una solución para que esto suceda?
Si es algo que va a persistir solamente en tiempo de ejecución le sugeriría a almacenar esa lista en un objeto único y luego leer de ella en su próxima actividad.
Es bastante fácil, sencillo y CPU IO-amigable camino / para resolver su problema.
Ejemplo:
public class BitmapDTO {
private static BitmapDTO instance;
public static BitmapDTO getInstance() {
if (instance == null)
instance = new BitmapDTO();
return instance;
}
private List<Bitmap> bitmaps;
private BitmapDTO() { }
public void setBitmaps(List<Bitmap> bitmaps) {
this.bitmaps = bitmaps;
}
public List<Bitmap> getBitmaps() {
return bitmaps;
}
}
actividad de la fuente:
BitmapDTO.getInstance().setBitmaps(myBitmaps);
Intent intent = new Intent(InputProcessingActivity.this, CompareActivity.class);
startActivity(intent);
Y, por último, en su actividad de destino:
private List<Bitmap> myBitmaps;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
myBitmaps = BitmapDTO.getInstance().getBitmaps();
// Do your stuff
}