Я реализую довольно стандартное приложение с Android SDK, которое включает рисование с использованием SurfaceView, SurfaceHolder, настройки обратного вызова.
В моем основном потоке (поток пользовательского интерфейса) у меня нет рисования или обработки SurfaceHolder(или холст, который вы получаете с ним).
В отдельном потоке у меня есть следующее:
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);
}
}
Этот код выполняется, не вызывает исключений и не имеет отрицательных побочных эффектов.что я могу найти;однако вызов unlockCanvasAndPost () никогда не приводит к вызову onDraw ().
Другими словами, unlockCanvasAndPost () не вызывает перерисовку SurfaceView.
Любые идеи, которые могут вызвать этосимптом?У меня большой опыт работы с Java, достаточно опыта работы с Android и большой опыт отладки, и я не могу его отследить.
Заранее спасибо.