【发布时间】:2015-09-28 18:32:20
【问题描述】:
我有一些代码使用新的 Palette 类,我在 Crashlytics 上收到这些崩溃报告,上面写着 width and height must be > 0。奇怪的是,这就是我调用调色板代码的方式:
if( bitmap == null || bitmap.getHeight() <= 0 || bitmap.getWidth() <= 0){
//do something
}else{
Palette.Builder(bitmap).generate(new Palette.PaletteAsyncListener() {
.....
}
所以我只是不确定位图怎么可能突然没有正确的高度或宽度。我不知道异常来自我的哪一段代码,因为报告只包含调色板类中的内容。
这是一个例外:
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)
我正在使用来自 com.android.support:palette-v7:23+ 的 Palette 类
有什么想法可能是错的吗?
【问题讨论】:
-
你真的确定位图有什么东西,甚至正在显示吗?调色板必须分析图像,几毫秒后,你会得到颜色。
-
嗯,我只收到 Crashlytics 的错误,从来没有发生在我身上。但在调用调色板代码之前,我正在检查 null 和大小。
-
应用永远不会崩溃?你可以重现这个问题吗?如果不是...也许某些用户使用的是低端智能手机并且任务花费了太多时间并且调色板找到空值(在调色板而不是位图上崩溃)
-
该应用程序从来没有因为这个问题而崩溃过。我不确定为什么在调色板运行时位图会变为空,调色板不会引用它吗?也许位图正在被回收,但错误会是关于它被回收吗?
-
我猜这个错误是由监听器内部的代码引起的。您能否提供更多代码(示例中的点在哪里)?
标签: android android-support-library android-palette