java - Memory vs Performance, which would be best? -


i need take image, scale it, mask it, add background in case of transparent , add overlay image. i've written following:

canvas canvas = new canvas(); bitmap mainimage = bitmap.createscaledbitmap(((bitmapdrawable)d).getbitmap(), iconsize, iconsize, false); bitmap result = bitmap.createbitmap(iconsize, iconsize, bitmap.config.argb_8888);  canvas.setbitmap(result); paint paint = new paint(); paint.setfilterbitmap(false);  bitmap mask = bitmap.createscaledbitmap(bitmapfactory.decoderesource(context.res, context.mask_bg)                     , iconsize, iconsize, false);                         canvas.drawbitmap(mask, 0, 0, paint); canvas.drawbitmap(mainimage, 0, 0, paint);  mask = bitmap.createscaledbitmap(bitmapfactory.decoderesource(context.res, context.mask)                     , iconsize, iconsize, false); paint.setxfermode(new porterduffxfermode(porterduff.mode.dst_in)); canvas.drawbitmap(mask, 0, 0, paint);  mask = bitmap.createscaledbitmap(bitmapfactory.decoderesource(context.res, context.mask_frame)                     , iconsize, iconsize, false); paint.setxfermode(null); canvas.drawbitmap(mask, 0, 0, paint); 

now operation going happen alot in application. , application has service running (which context in case). don't know performance when comes images , know use 4 times actual size in space seems waste me recreating same objects on , over. plus main need app performance on size.

so i'm wondering better keep bitmaps being generated each time in service they're created once (only mainimage bitmap change each time) or drawable create bitmap that?

never conserve drawable outside of activity/fragment displayed.
can create memory leaks : drawable keep reference activity, garbage collector can not destroy it, if has been destroyed , recreated since.
use bitmaps instead.


Comments