我目前正在使用 Android 中的 LiveWallpaper 进行测试。我正在使用如下代码在画布上绘制一些东西:
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()。当它不在前景时,是否不可能绘制到这个表面?