簡體   English   中英

內存與性能,哪個最好?

[英]Memory vs Performance, which would be best?

我需要拍攝圖像,縮放比例,遮罩它,添加背景(以防某些背景透明),然后添加覆蓋圖像。 為此,我編寫了以下內容:

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);

現在,此操作將在我的應用程序中大量發生。 而且我的應用程序始終在運行服務(在本例中為上下文)。 我對圖像的性能並不了解太多,我知道它們使用的空間是其實際大小的四倍,但這對於我一次又一次地重新創建相同的對象來說似乎是浪費。 再加上我的應用程序的主要需求是性能超過大小。

因此,我想知道將每次生成的位圖都保留在服務中是否更好,以便它們僅創建一次(每次僅更改mainImage位圖),還是作為可繪制對象從中創建位圖?

切勿在可顯示活動/片段的外部保存可繪制對象。
它很容易造成內存泄漏:可繪制對象保留對其活動的引用,因此垃圾收集器無法銷毀它,即使此后它已被銷毀並重新創建。
請改用位圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM