所以我有一個在視圖內實例化的線程。該線程應該調用postInvalidate()
每16毫秒(60fps)重新繪製屏幕。雖然屏幕從不重繪。它只是空白。我究竟做錯了什麼?代碼如下:在線程中每X秒失效
public class DrawingView extends View {
private Paint paint;
private GraphicsLoop gThread;
public DrawingView(Context context, AttributeSet attrs) {
super(context, attrs);
paint = new Paint();
gThread = new GraphicsLoop();
gThread.start();
}
@Override
protected void onDraw(Canvas canvas) {
// Draw Stuff
}
}
主題:
public class GraphicsLoop extends Thread {
private long frameTime;
GraphicsLoop(){
}
@Override
public void run() {
while(true) {
long frameTimeDelta = System.currentTimeMillis() - frameTime;
if (frameTimeDelta > 16) {
frameTime = System.currentTimeMillis();
postInvalidate();
}
}
}
@Override
public void start()
{
frameTime = System.currentTimeMillis();
}
}
你是否假設每個循環執行需要1 ms? –
我想這個問題是因爲你的16毫秒的高度難以分辨的時間..試着用5秒左右,看看你是否仍然面臨問題.. – hagrawal
更改時間值並沒有什麼區別。 – mstagg