본문 바로가기
안드로이드 스튜디오 앱 개발/개념 안드로이드 스튜디오

안드로이드 스튜디오 Handler 사용방법, Handler를 이용한 실행 대기 시키기 [Android Studio]

by 망댕이 2023. 6. 24.
반응형

오늘은 안드로이드 스튜디오 Handler를 사용하는 방법에 대해 포스팅을 해보도록 하겠습니다.

이번에는 차례대로 핸들러의 개념과 사용법, 실제 코드 예제 등을 포함하도록 작성하였습니다.

 

핸들러(Handler)란?

Handler는 안드로이드에서 스레드 간 통신을 위해 사용되는 객체입니다.

주로 백그라운드 스레드에서 메인(UI) 스레드로 작업을 보내기 위해 사용됩니다.

 

<Handler 사용 방법>

1. Handler 객체 생성

가장 먼저, Handler 객체를 생성해야 합니다.

이때 생성된 Handler 객체는 UI 스레드와 연결됩니다.

Handler handler = new Handler();

2. Handler를 사용하여 작업 예약

Handler를 사용하여 백그라운드 스레드에서 UI 스레드로 작업을 예약할 수 있습니다.

handler.post(new Runnable() {
    @Override
    public void run() {
        // 작업 수행할 코드
    }
});

이제 handler를 통해 버튼을 눌렀을 때 3초 뒤에 textView에

"3초 지남"이라는 글자가 나타나도록 하는 코드를 만들어보겠습니다.

//MainActivity.java 파일


public class MainActivity extends AppCompatActivity {
    Button button;
    TextView textView;

    Handler handler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        button = findViewById(R.id.button);
        textView = findViewById(R.id.textView);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        textView.setText("3초 지남");
                    }
                },3000);
            }
        });
    }
}
//activity_main.xml 파일


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <androidx.appcompat.widget.Toolbar
        android:id="@+id/balence_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#039BE5"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/MyFont"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:title="My Application"
        app:titleTextColor="#FFFFFF" />


    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textSize="50sp"
        android:textColor="#6C2B22"
        app:layout_constraintBottom_toTopOf="@+id/button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/balence_toolbar" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

버튼을 누르고 3초 후에 textView 안에 있는 글자가 3초 지남이라는 글자로 바뀌는 것을 확인할 수 있습니다.

이렇게 Handler를 이용하면 Splash 화면을 제작하거나

잠시 a를 진행하기 위해 b를 작업 예약을 걸어두는 코드를 만들어낼 수 있습니다.

반응형