Updating a canvas concurrently?

My Canvas is updated by creating a new CTimerTasks, this calls the Canvas paint() method after int time see appendix. On a Nokia 3650 and other emulators it works fine.

The problem is on a Nokia 3650 phone NOT a 3650 emulator!
timerTask.cancel(); appears not to work effectively because animation speed is sometimes increased, screen not being refreshed, this implies that calls to paint() are not concurrent.

Is there any way to be sure of concurrent calls to paint(). Is there any way to draw to the screen and be sure that it will actually happen (other than the futile calls to serviceRepaints()?

Appendix:

Timer timer;
TimerTask timerTask;
int time;

// kill all old threads
timerTask.cancel();

// create new thread
timerTask = new CTimerTask();
timer.schedule(timerTask, time);


public class CTimerTask extends TimerTask
{
public CTimerTask()
{
}

public void run()
{
canvas.repaint();
canvas.serviceRepaints();
}
}