Я получаю IllegalStateException: underflow in exception exception,, из-за которого мое приложение терпит крах. Это началось после обновления Android 4.3. На Android 3.0 - 4.2.x он отлично работает.underflow in restore in android 4.3
Исключение происходит на втором
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);
}
}
Мой вопрос
- Каков смысл этой ошибки?
- Как исправить эту ошибку?
Stack trace сообщение сгенерировано есть. Линия 165 соответствует второму canvas.restore()
08-13 18: 13: 09,083: Е/AndroidRuntime (14139): неустранимое: резьбы 506 08-13 18: 13: 09,083: Е/AndroidRuntime (14139): java.lang.IllegalStateException: Underflow in restore 08-13 18: 13: 09.083: E/AndroidRuntime (14139): at android.graphics.Canvas.restore (родной метод) 08-13 18: 13: 09.083: E/AndroidRuntime (14139): at 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)
Пожалуйста, разместите всю трассировку стека. – CommonsWare
добавлен трассировка стека – prashant