Android 如何在调用Canvas.drawText后恢复可变位图状态

Android 如何在调用Canvas.drawText后恢复可变位图状态,android,android-canvas,Android,Android Canvas,我有一个常见的位图,在多种情况下用作谷歌地图的标记。 每次我使用这个位图,我都会在上面画一些文字。有时这会导致OutOfMemory异常。我想知道是否有可能在内存中保留一个静态可变位图,只提供一个覆盖到贴图的文本副本 目前,我有一个对不可变位图的引用,我从中创建可变副本。 有没有可能在没有文字的情况下,以某种方式达到其原始状态 当前代码: public static Bitmap drawTextToBitmap(Context context, Bitmap bitmap, String te

我有一个常见的位图,在多种情况下用作谷歌地图的标记。 每次我使用这个位图,我都会在上面画一些文字。有时这会导致OutOfMemory异常。我想知道是否有可能在内存中保留一个静态可变位图,只提供一个覆盖到贴图的文本副本

目前,我有一个对不可变位图的引用,我从中创建可变副本。 有没有可能在没有文字的情况下,以某种方式达到其原始状态

当前代码:

public static Bitmap drawTextToBitmap(Context context, Bitmap bitmap, String text) {
    float scale = context.getResources().getDisplayMetrics().density;

    Bitmap mutableBitmap = null;
    try {
        mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

        Canvas canvas = new Canvas(mutableBitmap);
        canvas.save();
        // new antialised Paint
        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.WHITE);
        paint.setTextAlign(Paint.Align.CENTER);
        // text size in pixels
        paint.setTextSize((int) (BITMAP_TEXT_SIZE * scale));
        // text shadow
        paint.setShadowLayer(1f, 0f, 1f, Color.GRAY);

        // draw text to the Canvas center
        Rect bounds = new Rect();
        paint.getTextBounds(text, 0, text.length(), bounds);
        int x = bitmap.getWidth() / 2 - convertDpToPixel(BITMAP_TEXT_OFFSET);
        int y = bitmap.getHeight() / 2;

        canvas.drawText(text, x, y, paint);
        canvas.restore();
    } catch(Throwable t) {

    }
    return mutableBitmap;
}

您是需要位图格式,还是只需要一个具有绘图功能的自定义视图就可以了?你很可能在
View
View#draw()
方法中复制相同的代码,但它仍然可以工作。我不能在Google Maps V2中使用自定义视图