2016-07-13 14 views
1

라이브 벽지 응용 프로그램을 만들고 있습니다. 나는이 응용 프로그램에서 어떤 특정 간격 후에 동영상 개체가 surfaceHoldercanvas에 그 프레임을 그릴 것입니다.어떻게 TimerTask를 계속 실행할 수 있습니까?

내 코드

public void startTimer() { 
    timer = new Timer(); 
    initializeTimerTask(); 

} 

private void initializeTimerTask() { 
    timerTask = new TimerTask() {@ 
    Override 
    public void run() { 
     Canvas canvas = holder.lockCanvas(); 
     canvas.save(); 
     // Adjust size and position so that 
     // the image looks good on your screen 
     canvas.scale(1f, 1f); 
     movie.draw(canvas, -500, 0); 
     canvas.restore(); 
     holder.unlockCanvasAndPost(canvas); 
     movie.setTime((int)(System.currentTimeMillis() % movie.duration())); 

    } 
    }; 
    timer.schedule(timerTask, 33); 
} 

입니다하지만이 응용 프로그램을 실행할 때 하나의 프레임은 표면에 표시되며,이 시간이 지남에 따라 변경되지 않습니다.

내 코드의 오류는 무엇입니까? 표면이 시간이 지남에 따라 변하는 것을 어떻게 볼 수 있습니까?

답변

0

귀하의 타이머 작업이 단지 당신이 다시 작업의 내부

private void initializeTimerTask() { 
    timerTask = new TimerTask() {@ 
    Override 
    public void run() { 
     Canvas canvas = holder.lockCanvas(); 
     canvas.save(); 
     // Adjust size and position so that 
     // the image looks good on your screen 
     canvas.scale(1f, 1f); 
     movie.draw(canvas, -500, 0); 
     canvas.restore(); 
     holder.unlockCanvasAndPost(canvas); 
     movie.setTime((int)(System.currentTimeMillis() % movie.duration())); 
     timer.schedule(timerTask, 33);  
    } 
    }; 
    timer.schedule(timerTask, 33); 
} 

그것을 다시 예약 할 필요가 일단 예정하고

을 작동하기 위해 finaltimer을 만들 필요가있다