안드로이드에서 10초마다 메서드 반복 실행하기
이 튜토리얼에서는 안드로이드 앱에서 Handler와 Runnable을 활용해 특정 메서드를 10초(10,000밀리초) 간격으로 반복 실행하는 방법을 단계별로 알아봅니다. 이 기법은 주기적으로 데이터를 새로고침하거나 UI를 업데이트해야 하는 상황에서 매우 유용하게 사용됩니다.
1단계: 새 프로젝트 만들기
Android Studio에서 File → New Project를 선택한 뒤, 필요한 정보를 모두 입력하여 새 프로젝트를 생성합니다.
2단계: 레이아웃 파일 수정
res/layout/activity_main.xml 파일에 다음 코드를 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</LinearLayout>
3단계: MainActivity 코드 작성
src/MainActivity.java 파일에 다음 코드를 추가합니다.
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Handler handler = new Handler();
Runnable runnable;
int delay = 10000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
handler.postDelayed(runnable = new Runnable() {
public void run() {
handler.postDelayed(runnable, delay);
Toast.makeText(MainActivity.this, "This method is run every 10 seconds",
Toast.LENGTH_SHORT).show();
}
}, delay);
super.onResume();
}
@Override
protected void onPause() {
// 액티비티가 화면에 보이지 않으면 핸들러 동작 중지
handler.removeCallbacks(runnable);
super.onPause();
}
}
코드 설명:
- Handler: 메인 스레드에서 작업을 예약하고 실행할 수 있도록 도와주는 클래스입니다.
- postDelayed(): 지정한 지연 시간(여기서는 10,000ms = 10초)이 지난 후 Runnable을 실행합니다.
- onResume(): 액티비티가 화면에 나타날 때 반복 작업을 시작합니다. Runnable 내부에서 다시 자기 자신을 postDelayed로 등록하는 구조이기 때문에 무한히 반복됩니다.
- onPause(): 액티비티가 화면에서 사라질 때
removeCallbacks()를 호출해 반복 작업을 중지함으로써 불필요한 리소스 낭비와 배터리 소모를 방지합니다.
4단계: AndroidManifest.xml 설정
androidManifest.xml 파일에 다음 코드를 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바의 Run
아이콘을 클릭합니다. 목록에서 본인의 모바일 기기를 선택하면, 기기 화면에 아래와 같은 결과가 표시됩니다.

앱이 정상적으로 실행되면 10초마다 "This method is run every 10 seconds"라는 토스트 메시지가 화면에 나타나는 것을 확인할 수 있습니다.