안드로이드 스튜디오 딜레이(Delay) 구현

728x90

앱을 구현하다 보면 병렬 처리가 필요할 경우 스레드를 사용하면 되지만 상황에 따라서 일정시간 뒤에 전체 로직을 수행해야 할 경우가 있다.

 

필자 같은 경우 현재 구현하고 있는 카드 뒤집기 게임에서 일정시간 전체 카드를 보여주고 다시 뒤집는 로직을 수행하거나 두 번째 오픈한 카드가 일치하지 않을 때 일정시간 이후 다시 뒤집어야 되는데 여기서 딜레이가 필요했기 때문에 정리하기로 마음먹었다.

 

결론부터 말하자면 Handler의 postDelayed 메서드를 사용하면 된다.

new Handler().postDelayed(new Runnable(){
        @Override
        public void run(){
            //구현하고 싶은 코드
        }
    }, 5000);	//5초

 

Handler의 postDelayed 메서드에 Runnable 인터페이스를 파라미터로 주고 run을 실행시키는 형태이다.

 

이때 두 번째 파라미터는 딜레이하고 싶은 시간인데 기준이 ms(미리 세컨드)이므로 1초당 1000ms로 계산해서 넣으면 된다.

 

new Handler().postDelayed(new Runnable(){
        @Override
        public void run(){
            for (int i = 0; i < idIndex; i++){
                animator = ObjectAnimator.ofFloat(findViewById(i),"rotationY",0,180);
                animator.start();
            }
            clickControl(true);
            if(player == 1){
                stt = new SoloTimerThread();
                t = new Thread(stt);
            }else{
                dtt = new DuoTimerThread();
                t = new Thread(dtt);
            }
            t.start();
        }
    }, 5000);

위 코드는 5초의 딜레이를 주고 모든 카드들을 y축을 기준으로 180도 뒤집은 다음, 모드에 따라 해당하는 스레드를 실행시키는 예제이다.

 

의외로 스레드만큼 딜레이는 유용하므로 코드를 참고하여 적절히 사용하면 좋을 것 같다.

728x90

댓글()