안드로이드 스튜디오 딜레이(Delay) 구현
앱을 구현하다 보면 병렬 처리가 필요할 경우 스레드를 사용하면 되지만 상황에 따라서 일정시간 뒤에 전체 로직을 수행해야 할 경우가 있다.
필자 같은 경우 현재 구현하고 있는 카드 뒤집기 게임에서 일정시간 전체 카드를 보여주고 다시 뒤집는 로직을 수행하거나 두 번째 오픈한 카드가 일치하지 않을 때 일정시간 이후 다시 뒤집어야 되는데 여기서 딜레이가 필요했기 때문에 정리하기로 마음먹었다.
결론부터 말하자면 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도 뒤집은 다음, 모드에 따라 해당하는 스레드를 실행시키는 예제이다.
의외로 스레드만큼 딜레이는 유용하므로 코드를 참고하여 적절히 사용하면 좋을 것 같다.
'취업 후 학습 > 안드로이드' 카테고리의 다른 글
안드로이드 스튜디오 스레드(Thread) 구현하기 (0) | 2023.01.03 |
---|---|
안드로이드 스튜디오 Lombok 사용하기 (0) | 2022.12.26 |
안드로이드 스튜디오 액션 바(Action Bar) 없애기 (5) | 2022.12.03 |
안드로이드 스튜디오 액티비티 전환하기 (0) | 2022.12.02 |
안드로이드 스튜디오 깃허브 연동하기 (0) | 2022.11.28 |