안드로이드/기타

timer event handler (타이머 이벤트 핸들러)

FA1976 2017. 1. 19. 09:18

주기적으로 어떤한 일을 시키려 할때 흔히 쓰는 타이머 이벤트 핸들러이다.


타이머를 이용해서 일정 시간 마다 어떠한 일을 수행하기 위해서는 아래 코드를 이용하면 쉽다.


<사용 방법>


onCreate() 함수 안에 넣어 쓰면 된다


final Handler myHandler = new Handler();
Runnable myRunnable = new Runnable() {
@Override
public void run() {

String nGoFloor ="";
for (int i = 0; i < lstGeneral.size(); i++) {
nGoFloor = nGoFloor + lstGeneral.get(i)+"\n";
}

Toast.makeText(MainActivity.this, nGoFloor, Toast.LENGTH_SHORT).show();
myHandler.postDelayed(this,3000);
}
};

myHandler.postDelayed(myRunnable,3000);


<간단 설명>

final Handler myHandler = new Handler();

핸들러를 하나 생성해준다. 여기서는 myHandler 라는 나만의 네임으로 만들었다.

1) final의 의미는 상수화 한다라는 의미라는데... 써줘야 한다. 안쓰면 안스에서 쓰라고    에러가 뜬다.

2) Handler의 Import는 반드시 "import android.os.Handler;" 요걸 써야 한다.

  자바가 아니라는거!! 명심하자.

3) new Handler()는 없는거 만들어 주니까 당연히 new Handler()로 써줘야 한다.


Runnable myRunnable = new Runnable() {
@Override
public void run() {

String nGoFloor ="";
for (int i = 0; i < lstGeneral.size(); i++) {
nGoFloor = nGoFloor + lstGeneral.get(i)+"\n";
}

Toast.makeText(MainActivity.this, nGoFloor, Toast.LENGTH_SHORT).show();
myHandler.postDelayed(this,3000);
}
};

Runnable을 하나 생성해 준다. 여기서는 myRunnable 이라는 나만의 네임으로 만들었다.


        String nGoFloor ="";
for (int i = 0; i < lstGeneral.size(); i++) {
nGoFloor = nGoFloor + lstGeneral.get(i)+"\n";
}

Toast.makeText(MainActivity.this, nGoFloor, Toast.LENGTH_SHORT).show();
myHandler.postDelayed(this,3000);

Runnable안의 요 코드는 테스트 용 코드 이므로 자신이 주기적으로 수행할 함수라든지 코드를 집어 넣어주면 된다.


myHandler.postDelayed(this,3000);

Runnable안의 이것은 myRunnable을 수행한뒤에 3000 ms 뒤에 myRunnable을 수행 하라는 의미이다. 아래 코드와의 차이점은 this를 쓴것인데. 이것은 당연히 현재 수행되고 있는 함수가 자기 자신이므로 this 이다.


myHandler.postDelayed(myRunnable,3000);

onCreate 함수를 실행하면 3000ms 뒤에 myRunnable를 수행하라는 의미 이다.



'안드로이드 > 기타' 카테고리의 다른 글

물과 불 게임 2탄  (0) 2020.07.28
물과 불 게임 1탄  (0) 2020.07.28
AlertDialog - Exit (어플종료)  (0) 2017.01.23
AlertDialog -list  (0) 2017.01.23
Fragment (프래그먼트)  (0) 2017.01.23
onclickListener (이벤트 할당)  (0) 2017.01.19
Intent Share (공유하기)  (0) 2017.01.19
게임으로 배우는 안드로이드 개발  (0) 2016.08.31