Я загружаю растровое изображение из ресурса примерно так:
Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image);
То, что я хочу сделать, это внести некоторые изменения в растровое изображение, прежде чем оно будет нарисовано на основном холсте в моем методе draw (поскольку было бы расточительно повторять много рисования в моем основном цикле, не собирается менять). Я делаю изменения в растровое изображение со следующим:
Canvas c = new Canvas(mBackground);
c.drawARGB(...); // etc
Естественно, я получаю исключение
java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor
Чтобы не создавать копию растрового изображения, чтобы оно было изменяемым
Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image).copy(Bitmap.Config.ARGB_8888, true);
Которые избегают проблемы, однако иногда она вызывает OutOfMemoryExceptions, знаете ли вы какие-нибудь лучшие способы достижения того, чего я хочу?