我正在使用Android sdk实现一个相当标准的应用程序,该应用程序涉及使用SurfaceView,SurfaceHolder和Callback设置进行绘制.
在我的主线程(UI线程)中,我没有绘制或处理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);
}
}
Run Code Online (Sandbox Code Playgroud)
正在执行此代码,不会抛出任何异常,并且没有我可以找到的负面影响; 但是,unlockCanvasAndPost()调用永远不会导致调用onDraw().
换句话说,unlockCanvasAndPost()不会导致重绘SurfaceView.
什么可能导致这种症状的想法?我有丰富的java经验,相当多的android经验,以及大量的调试经验,无法跟踪这一点.
提前致谢.
我需要一种方法来在经过一定时间后修改表中的值.我目前的方法如下:
这将成为网站的一大特色,因此效率是关键; 考虑到这一点,你可能会看到我如何做的问题.每当有人访问需要该信息的页面时,就会调用相同的代码块.
任何改进建议或更好的方法都将受到高度赞赏,最好是在php或perl中.
回答cron的工作答案:谢谢,如果可能的话,我想做类似的事情,但主机限制是问题所在.由于这是应用程序的主要部分,因此不能受到限制.