我刚开始学习动态壁纸和我做了这个小东西。
事情是我的应用程序有任何问题汇总。
正如我在电话中打开它它显示在预览墙纸但是当我点击“设置为墙纸”它在某种程度上崩溃,并返回前屏幕,和我的壁纸将变成黑色,但它不运行它。
我的猜测是,这个问题是沿onDestory一些地方()..
public class Strips extends WallpaperService {
private StripsEngine engine;
@Override
public void onCreate() {
super.onCreate();
engine = new StripsEngine();
engine.resume();
}
@Override
public void onDestroy() {
super.onDestroy();
engine.pause();
}
@Override
public Engine onCreateEngine() {
return engine;
}
class StripsEngine extends Engine implements Runnable {
private Thread t = null;
private SurfaceHolder holder;
private boolean clearToRun = false;
private Paint paint = new Paint();
private Paint paint2 = new Paint();
private int frame;
private float endX,endY;
private int height, width;
private Canvas c;
StripsEngine() {
holder = getSurfaceHolder();
paint.setColor(Color.WHITE);
paint.setStrokeWidth(30);
paint.setAntiAlias(true);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStyle(Paint.Style.STROKE);
paint2 = paint;
paint2.setColor(Color.BLACK);
paint2.setStrokeWidth(40);
frame = 0;
}
void drawStrips() {
}
public void run() {
// TODO Auto-generated method stub
while (clearToRun) {
if (!holder.getSurface().isValid()) {
continue;
}
height = 800;
width = 480;
endX = (frame) % (width + 10);
endY = (frame / 3) % (height + 10);
if (endX == 0)
paint.setARGB(255,(int)(Math.random()*255), (int)(Math.random()*255),(int)(Math.random()*255));
if (endY ==0)
paint.setARGB(255,(int)(Math.random()*255), (int)(Math.random()*255),(int)(Math.random()*255));
c = holder.lockCanvas();
c.drawLine(endX-30, endY-10, endX , endY,paint);
c.drawLine(endX-30, endY-10, endX , endY,paint);
holder.unlockCanvasAndPost(c);
frame = frame +2;
}
}
public void pause() {
clearToRun = false;
while (true) {
try {
t.join();
}
catch (InterruptedException e) {
e.printStackTrace();
}
break;
}
t = null;
}
public void resume() {
clearToRun = true;
t = new Thread(this);
t.start();
}
}
}
07-06 17:14:43.869:E /表面(478):错误出队缓冲器(未知的错误:-19)07-06 17:14:43.869:E /表面(478):dequeueBuffer失败(没有这样的设备) 07-06 17:14:43.869:E / BaseSurfaceHolder(478):异常锁定表面07-06 17:14:43.869:E / BaseSurfaceHolder(478):java.lang.IllegalArgumentException异常07-06 17:14:43.869:电子/ BaseSurfaceHolder(478):在android.view.Surface.lockCanvasNative(本机方法)07-06 17:14:43.869:E / BaseSurfaceHolder(478):在android.view.Surface.lockCanvas(Surface.java:288)07 -06 17:14:43.869:E / BaseSurfaceHolder(478):在com.android.internal.view.BaseSurfaceHolder.internalLockCanvas(BaseSurfaceHolder.java:132)07-06 17:14:43.869:E / BaseSurfaceHolder(478):在com.android.internal.view.BaseSurfaceHolder.lockCanvas(BaseSurfaceHolder.java:112)07-06 17:14:43.869:E / BaseSurfaceHolder(478):在com.mendel.strips.Strips $ StripsEngine.run(条。的java:81)07-06 17:14:43.869:E / BaseSurfaceHolder(478):在java.lang.Thread.run(Thread.java:1096)07-06 17:14:43.972:W / d alvikvm(478):线程ID = 15:用未捕获的异常线程退出(组= 0x4001b188)07-06 17:14:43.979:E / AndroidRuntime(478):未捕获的处理程序:螺纹螺纹-8离开由于未捕获的异常07-06 17:14:43.990:E / AndroidRuntime(478):显示java.lang.NullPointerException 07-06 17:14:43.990:E / AndroidRuntime(478):在com.mendel.strips.Strips $ StripsEngine.run(Strips.java :82)07-06 17:14:43.990:E / AndroidRuntime(478):在java.lang.Thread.run(Thread.java:1096)07-06 17:14:43.999:I / dalvikvm(478):主题ID = 7:反应以信号3月7日至6日17:14:43.999:E / dalvikvm(478):无法打开堆栈跟踪文件 '/data/anr/traces.txt':权限被拒绝