我收到IllegalStateException: underflow in restore 异常,这导致我的应用程序崩溃。这在 android 4.3 更新后开始发生。在 android 3.0 - 4.2.x 上它工作正常。
异常发生在第二个
canvas.restore();
下面给出的是我的绘图代码
private void doDraw(Canvas canvas) {
if(mTickerBackGround!=null && (!mTickerBackGround.isRecycled())){
canvas.drawBitmap(mTickerBackGround, 0, 0, null);
}
if((mBitMapBuffer!=null)){
canvas.save();
canvas.translate(mX, 0);
if(!mBitMapBuffer.isRecycled()){
canvas.drawBitmap(mBitMapBuffer, 0, 0, null);
}
canvas.restore();
if(bitMapWidth+mX<mCanvasWidth){
canvas.translate(bitMapWidth+mX, 0);
if(!mBitMapBuffer.isRecycled()){
canvas.drawBitmap(mBitMapBuffer, 0, 0, null);
}
canvas.restore();
}
if(bitMapWidth+mX<=0){
mX = 0;
}else if(Math.abs(mX)>(bitMapWidth)){
mX= mCanvasWidth;
}
mX-=TickerConstants.SCROLLING_SMOOTHNESS*density;;
}
if(mLogo!=null && (!mLogo.isRecycled())){
canvas.drawBitmap(mLogo, mCanvasWidth-(60*density), mLogo.getHeight()/6, null);
}
}
我的问题是
- 这个错误是什么意思?
- 我该如何解决这个错误?
生成的堆栈跟踪消息是 . 第 165 行对应于第二个 canvas.restore()
08-13 18:13:09.083:E/AndroidRuntime(14139):致命异常:线程 506 08-13 18:13:09.083:E/AndroidRuntime(14139):java.lang.IllegalStateException:恢复 08-13 中的下溢18:13:09.083: E/AndroidRuntime(14139): 在 android.graphics.Canvas.restore(Native Method) 08-13 18:13:09.083: E/AndroidRuntime(14139): 在 com.my.package.name。 ticker.TickerSurfaceView$TickerThread.doDraw(TickerSurfaceView.java:165) 08-13 18:13:09.083: E/AndroidRuntime(14139): at com.my.package.name.ticker.TickerSurfaceView$TickerThread.run(TickerSurfaceView.java :128)