私はを取得しています。IllegalStateException:リストア例外でアンダーフロー、が原因でアプリケーションがクラッシュする これはアンドロイド4.3のアップデート後に起こり始めました。アンドロイド3.0 - 4.2.xでは正常に動作します。アンドロイドのリストアでアンダーフロー4.3
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);
}
}
私の質問は私の描画コード
例外は下記の二
canvas.restore();
に起こる
- このエラーの意味は何ですか?
- このエラーを修正するにはどうすればよいですか?
スタックトレースメッセージが生成されます。ライン165は、第canvas.restore()に対応
8月13日18:13:09.083:E/AndroidRuntime(14139):致命的な例外: スレッド506 8月13日18:13:09.083:E/AndroidRuntime(14139): とandroid.graphics.Canvas.restore(ネイティブメソッド)08-13 18:13:09.083:E/AndroidRuntime(14139): で、083のリストアでアンダーフローが発生しました08-13 18:13:09.083: java.lang.IllegalStateException: 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): com.my.package.name.ticker.TickerSurfaceView $ TickerThread.run (TickerSurfaceView.java:128)
スタックトレース全体を送信してください。 – CommonsWare
スタックトレースを追加 – prashant