Mam w aplikacji mapę świata (bitmapa) na której zaznaczają się kropki.
Generalnie kod inicjowania wygląda tak:
background = BitmapFactory.decodeResource(res, R.drawable.world);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(background, d, h, true);
background.recycle();
background = scaledBitmap;
bg = Bitmap.createBitmap(d, h, Bitmap.Config.ARGB_8888);
canvas = new Canvas(bg);
img.setImageBitmap(bg);
gdzie d i h to wymiary bitmapy w aplikacji. Potem są proste operacje na Canvas i nic więcej.
Resetowanie Canvas wygląda tak:
Paint clearPaint = new Paint();
clearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawRect(0,0,d,h,clearPaint);
canvas.drawBitmap(background, 0, 0, null);
Wyjątek powoduje konkretnie ostatnia linia z powyższego kodu.
Co dziwne aplikacje testowałem mocno na wielu telefonach i było ok. Widzę z danych w konsoli Google Play, że wyjątki pojawiają się tylko na 2 telefonach Xiami oraz na Huawei Mate 9 - do tych telefonów dostępu nie mam.