我正在对5个设备进行应用程序测试:三星Galaxy Core、三星S6 Edge、Moto G4、小米Redmi Note 4和小米MiA1。在它们上面加载位图正常,但在其他一些设备上会抛出
日志:
致命异常:java.lang.RuntimeException: Canvas:尝试绘制太大(135788800字节)的位图。 在android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:229)处抛出 在android.view.RecordingCanvas.drawBitmap(RecordingCanvas.java:97)处绘制位图 在android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:529)处绘制位图 在android.widget.ImageView.onDraw(ImageView.java:1367)处绘制位图 在android.view.View.draw(View.java:20338)处绘制视图 在android.view.View.updateDisplayListIfDirty(View.java:19283)处更新显示列表 在android.view.View.draw(View.java:20061)处绘制视图 在android.view.ViewGroup.drawChild(ViewGroup.java:4421)处绘制子View 在android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)处分发绘制事件 在android.view.View.draw(View.java:20341)处绘制视图 在android.view.View.updateDisplayListIfDirty(View.java:19283)处更新显示列表 在android.view.View.draw(View.java:20061)处绘制视图 在android.view.ViewGroup.drawChild(ViewGroup.java:4421)处绘制子View 在android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)处分发绘制事件 在android.view.View.updateDisplayListIfDirty(View.java:19274)处更新显示列表 在android.view.View.draw(View.java:20061)处绘制视图 在android.view.ViewGroup.drawChild(ViewGroup.java:4421)处绘制子View 在android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)处分发绘制事件 在android.view.View.updateDisplayListIfDirty(View.java:19274)处更新显示列表 在android.view.View.draw(View.java:20061)处绘制视图 在android.view.ViewGroup.drawChild(ViewGroup.java:4421)处绘制子View 在android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)处分发绘制事件 在android.view.View.updateDisplayListIfDirty(View.java:19274)处更新显示列表 在android.view.View.draw(View.java:20061)处绘制视图 在android.view.ViewGroup.drawChild(ViewGroup.java:4421)处绘制子View 在android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)处分发绘制事件 在android.view.View.draw(View.java:20341)处绘制视图 在com.android.internal.policy.DecorView.draw(DecorView.java:979)处绘制视图 在android.view.View.updateDisplayListIfDirty(View.java:19283)处更新显示列表 在android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:686)处更新显示列表 在android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:692)处更新显示列表 在android.view.ThreadedRenderer.draw(ThreadedRenderer.java:800)处绘制视图 在android.view.ViewRootImpl.draw(ViewRootImpl.java:3447)处绘制视图 在android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3234)处执行绘制操作 在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2769)处遍历视图树 在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1738)处执行遍历操作 在android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7745)处运行遍历操作 在android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)处运行回调函数 在android.view.Choreographer.doCallbacks(Choreographer.java:723)处执行回调操作 在android.view.Choreographer.doFrame(Choreographer.java:658)处执行绘制操作 在android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)处运行绘制事件接收器 在android.os.Handler.handleCallback(Handler.java:789)处处理回调函数 在android.os.Handler.dispatchMessage(Handler.java:98)处分发消息 在android.os.Looper.loop(Looper.java:164)处循环执行 在android.app.ActivityThread.main(ActivityThread.java:6938)处运行主线程 在java.lang.reflect.Method.invoke(Method.java)处调用方法 在com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)处运行方法和参数
java.lang.RuntimeException: Canvas: trying to draw too large
。您能否帮我找到解决方案?日志:
致命异常:java.lang.RuntimeException: Canvas:尝试绘制太大(135788800字节)的位图。 在android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:229)处抛出 在android.view.RecordingCanvas.drawBitmap(RecordingCanvas.java:97)处绘制位图 在android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:529)处绘制位图 在android.widget.ImageView.onDraw(ImageView.java:1367)处绘制位图 在android.view.View.draw(View.java:20338)处绘制视图 在android.view.View.updateDisplayListIfDirty(View.java:19283)处更新显示列表 在android.view.View.draw(View.java:20061)处绘制视图 在android.view.ViewGroup.drawChild(ViewGroup.java:4421)处绘制子View 在android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)处分发绘制事件 在android.view.View.draw(View.java:20341)处绘制视图 在android.view.View.updateDisplayListIfDirty(View.java:19283)处更新显示列表 在android.view.View.draw(View.java:20061)处绘制视图 在android.view.ViewGroup.drawChild(ViewGroup.java:4421)处绘制子View 在android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)处分发绘制事件 在android.view.View.updateDisplayListIfDirty(View.java:19274)处更新显示列表 在android.view.View.draw(View.java:20061)处绘制视图 在android.view.ViewGroup.drawChild(ViewGroup.java:4421)处绘制子View 在android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)处分发绘制事件 在android.view.View.updateDisplayListIfDirty(View.java:19274)处更新显示列表 在android.view.View.draw(View.java:20061)处绘制视图 在android.view.ViewGroup.drawChild(ViewGroup.java:4421)处绘制子View 在android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)处分发绘制事件 在android.view.View.updateDisplayListIfDirty(View.java:19274)处更新显示列表 在android.view.View.draw(View.java:20061)处绘制视图 在android.view.ViewGroup.drawChild(ViewGroup.java:4421)处绘制子View 在android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)处分发绘制事件 在android.view.View.draw(View.java:20341)处绘制视图 在com.android.internal.policy.DecorView.draw(DecorView.java:979)处绘制视图 在android.view.View.updateDisplayListIfDirty(View.java:19283)处更新显示列表 在android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:686)处更新显示列表 在android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:692)处更新显示列表 在android.view.ThreadedRenderer.draw(ThreadedRenderer.java:800)处绘制视图 在android.view.ViewRootImpl.draw(ViewRootImpl.java:3447)处绘制视图 在android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3234)处执行绘制操作 在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2769)处遍历视图树 在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1738)处执行遍历操作 在android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7745)处运行遍历操作 在android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)处运行回调函数 在android.view.Choreographer.doCallbacks(Choreographer.java:723)处执行回调操作 在android.view.Choreographer.doFrame(Choreographer.java:658)处执行绘制操作 在android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)处运行绘制事件接收器 在android.os.Handler.handleCallback(Handler.java:789)处处理回调函数 在android.os.Handler.dispatchMessage(Handler.java:98)处分发消息 在android.os.Looper.loop(Looper.java:164)处循环执行 在android.app.ActivityThread.main(ActivityThread.java:6938)处运行主线程 在java.lang.reflect.Method.invoke(Method.java)处调用方法 在com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)处运行方法和参数