Tôi đang triển khai một ứng dụng khá chuẩn với sdk Android có liên quan đến việc vẽ bằng SurfaceView, SurfaceHolder, thiết lập gọi lại.Android SurfaceHolder.unlockCanvasAndPost() không làm cho vẽ lại
Trong chủ đề chính của tôi (chuỗi giao diện người dùng) Tôi không có bản vẽ hoặc xử lý SurfaceHolder (hoặc khung bạn lấy với nó).
Trong một thread riêng biệt Tôi đã điều sau đây:
Log.i("GAME.DrawThread", "run()");
Log.i("GAME.DrawThread", Thread.currentThread().getName());
Canvas canvas = null;
try {
canvas = holder.lockCanvas();
synchronized(holder) {
Log.i("GAME", "draw():synchronized");
Paint paint = new Paint();
paint.setColor(R.color.draw_color);
canvas.drawColor(R.color.draw_color);
canvas.drawLine(0, 0, 500, 500, paint);
}
} catch (SurfaceHolder.BadSurfaceTypeException e) {
Log.e("GAME", "onDraw(): BadSurfaceTypeException");
} finally {
if (canvas != null) {
holder.unlockCanvasAndPost(canvas);
}
}
Mã này đã được thực hiện, ném không có ngoại lệ, và không có tác dụng phụ tiêu cực mà tôi có thể tìm thấy; tuy nhiên, cuộc gọi unlockCanvasAndPost() không bao giờ gây ra onDraw() được gọi.
Nói cách khác, unlockCanvasAndPost() không gây ra việc vẽ lại SurfaceView.
Bất kỳ ý tưởng nào có thể gây ra triệu chứng này? Tôi có rất nhiều trải nghiệm java, một số tiền hợp lý của trải nghiệm Android và rất nhiều trải nghiệm gỡ lỗi và không thể theo dõi trải nghiệm này.
Xin cảm ơn trước.
Mã này hiện bị treo trong Android 4.3 –