Autore Topic: Errore android.graphics.Canvas.throwIfRecycled su drawBitmap  (Letto 403 volte)

Offline Giacomo79

  • Utente junior
  • **
  • Post: 123
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    Big and Fish
  • Sistema operativo:
    Android 2.3
Errore android.graphics.Canvas.throwIfRecycled su drawBitmap
« il: 10 Luglio 2014, 02:04:59 CEST »
0
Salve non capisco perchè ottengo questo errore alla seconda o terza volta che questa istruzione viene eseguita.

Codice: [Seleziona]
canvas.drawBitmap(bmp, null, rectBtnUnpause, paint);
Le prime volte non ci sono problemi.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Errore android.graphics.Canvas.throwIfRecycled su drawBitmap
« Risposta #1 il: 10 Luglio 2014, 07:45:59 CEST »
0
Potevi postare un po' più codice, così è un indovinello da settimana enogmistica !!  ;-)
Non c'è neanche l'eccezione (è una Null PointerException?)

Comunque, scommetto che la usi in una OnDraw e scommetto che la bitmap viene decodificata ogni volta nella OnDraw.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Giacomo79

  • Utente junior
  • **
  • Post: 123
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    Big and Fish
  • Sistema operativo:
    Android 2.3
Re:Errore android.graphics.Canvas.throwIfRecycled su drawBitmap
« Risposta #2 il: 10 Luglio 2014, 15:11:33 CEST »
0
Chiedo scusa per la mancanza di informazioni, stavo scrivendo di corsa .... :(

Cmq l'istruzione viene eseguita nell'ondraw, ma l'immagine è stata già decodificata in precedenza e si trova in una hashmap.

Solo che la stessa variabile "bmp" viene utilizzata più volte. Questo il codice:
Codice: [Seleziona]
Bitmap bmp;

bmp = mBmpStore.get("unpause");
canvas.drawBitmap(bmp, null, rectBtnUnpause, paint);
       
bmp = mBmpStore.get((Boolean)prefs.get(Util.PREF_SOUND) ? "sound_on" : "sound_off");
canvas.drawBitmap(bmp, null, rectBtnSound, paint);
               
bmp = mBmpStore.get((Boolean)prefs.get(Util.PREF_MUSIC) ? "music_on" : "music_off");
canvas.drawBitmap(bmp, null, rectBtnMusic, paint);
               
bmp = mBmpStore.get("restart");
canvas.drawBitmap(bmp, null, rectBtnRestart, paint);
               
bmp = mBmpStore.get("home");
canvas.drawBitmap(bmp, null, rectBtnHome, paint);
Non so se può essere questo il problema.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Errore android.graphics.Canvas.throwIfRecycled su drawBitmap
« Risposta #3 il: 10 Luglio 2014, 15:22:11 CEST »
0
Se queste righe di codice sono nella OnDraw e il get di mBmpStore fa qualcosa tipo decodifica da resources, può essere un problema.

Ma puoi verificarlo solo tu che vedi il codice.  :-)  E puoi anche provare a non fare quelle cose e vedere se il problema persiste.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Giacomo79

  • Utente junior
  • **
  • Post: 123
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    Big and Fish
  • Sistema operativo:
    Android 2.3
Re:Errore android.graphics.Canvas.throwIfRecycled su drawBitmap
« Risposta #4 il: 10 Luglio 2014, 15:52:52 CEST »
0
Se queste righe di codice sono nella OnDraw e il get di mBmpStore fa qualcosa tipo decodifica da resources, può essere un problema.

Ma puoi verificarlo solo tu che vedi il codice.  :-)  E puoi anche provare a non fare quelle cose e vedere se il problema persiste.
Non fa nessuna decodifica, l'hashmap è stato dichiarato così:
Codice: [Seleziona]
private HashMap<String, Bitmap> mBmpStore = new HashMap<String, Bitmap>();
L'immagine viene decodificata una volta sola.