David Prun
David Prun

Reputation: 8433

Thread.sleep in Canvas

I am not able to display the rectangles after a certain delay in code. Here is what I am doing

DashPathEffect dashPath =new DashPathEffect(new float[]{1,0}, 1);

        paint.setPathEffect(dashPath);
        paint.setStrokeWidth(300);
        final int  size =300;

canvas.drawLine(0, size ,100 , size, paint);

try {

            Thread.sleep(4000, 0);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

canvas.drawLine(110, size ,200 , size, paint);


I am not able to notice any delay between these two rectagles in the mobile screen. Both appear at the same time. All I am trying to do is, draw the rectangles one after other with some delay in between. What this code is rather doing is, waiting for 4 seconds and then displaying both rectangles at same time. Thank you.

Upvotes: 0

Views: 1019

Answers (1)

Cheryl Simon
Cheryl Simon

Reputation: 46844

You should never sleep in the UI thread. As you saw, this causes the entire program to lock up and wait for the sleep to complete.

Instead, in this case you might want to look into using a handler. See timed ui-updates for a full description on how to do this.

Upvotes: 1

Related Questions