я получил следующий код:Android lockCanvas() возвращает холст на одном устройстве, а на другой возвращает нулевое значение
public void messageReceived(String message) {
...
...
synchronized (getHolder()) {
if(isCreated) {
Canvas canvas = getHolder().lockCanvas();
if (canvas != null) {
draw(canvas);
getHolder().unlockCanvasAndPost(canvas);
}
}
}
...
...
}
Проблема заключается в следующем: на моем HTC Desire (Android 4.1.2) метод getHolder().lockCanvas()
возвращается холст, который затем я использую для рисования на нем. НО на моем смартфоне друзей (Android 4.2.2) он возвращает null, поэтому я не могу рисовать на нем. Есть идеи?
EDIT Я изменил код немного просто чтобы быть уверенным:
synchronized (getHolder()) {
if(isCreated && !isLocked) {
Canvas canvas = getHolder().lockCanvas();
isLocked = true;
if (canvas != null) {
draw(canvas);
getHolder().unlockCanvasAndPost(canvas);
isLocked = false;
}
}
}
isCreated и isLocked общественные статические булевы.