Ho un po 'di codice usando la nuova classe Palette
e sto ricevendo questi rapporti di arresto anomalo su Crashlytics dicendo che il width and height must be > 0
. Ciò che è strano è che questo è il modo che io chiamo il codice palette:android.support.v7.graphics.Palette width and height deve essere> 0
if(bitmap == null || bitmap.getHeight() <= 0 || bitmap.getWidth() <= 0){
//do something
}else{
Palette.Builder(bitmap).generate(new Palette.PaletteAsyncListener() {
.....
}
, quindi sono solo non è sicuro come sia possibile che la bitmap tutto ad un tratto non ha la giusta altezza o larghezza. Non so da quale parte del mio codice provenga l'eccezione perché il report include solo elementi all'interno della classe della palette.
Qui è l'eccezione:
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalArgumentException: width and height must be > 0
at android.graphics.Bitmap.createBitmap(Bitmap.java:815)
at android.graphics.Bitmap.createBitmap(Bitmap.java:794)
at android.graphics.Bitmap.createBitmap(Bitmap.java:725)
at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:601)
at android.support.v7.graphics.Palette.scaleBitmapDown(Palette.java:282)
at android.support.v7.graphics.Palette.access$100(Palette.java:67)
at android.support.v7.graphics.Palette$Builder.generate(Palette.java:557)
at android.support.v7.graphics.Palette$Builder$1.doInBackground(Palette.java:623)
at android.support.v7.graphics.Palette$Builder$1.doInBackground(Palette.java:620)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Sto usando la classe tavolozza da com.android.support:palette-v7:23+
Tutte le idee su quello che potrebbe essere sbagliato?
sei davvero sicuro che la bitmap abbia qualcosa o addirittura lo mostri? la palette deve analizzare l'immagine e pochi ms dopo, otterrai il colore. –
Beh, ho solo gli errori su Crashlytics, non mi succede mai. Ma sto controllando per null e dimensioni prima di chiamare il codice della palette. – casolorz
l'app non si arresta mai in modo anomalo? potresti ricreare il problema? in caso contrario ... forse alcuni utenti hanno uno smartphone di fascia bassa e l'attività ha richiesto troppo tempo e la tavolozza ha trovato valori nulli (crash sopra la tavolozza e non sopra la bitmap) –