В настоящее время я делаю тест с LiveWallpaper в Android. Я рисую что-то на холсте, используя код, который выглядит примерно так:
final SurfaceHolder holder = getSurfaceHolder();
Canvas c = new Canvas();
c = holder.lockCanvas(); // c becomes null
c.save();
c.drawBitmap(currentBitmap);
c.restore();
holder.unlockCanvasAndPost(c);
Эта часть работает нормально при нормальных обстоятельствах . Тем не менее, у меня есть прослушиватель, который выполняет этот код всякий раз, когда параметр изменяется в настройках, которые соответствуют этой службе. Кажется, что всякий раз, когда я выполняю этот код из действия настройки, я получаю NullPointer
по методу c.save()
.
Кажется, что только когда обои находятся не на переднем плане, holder.lockCanvas (). Нельзя ли рисовать на этой поверхности, когда она не на переднем плане?