Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách tạo độ trễ (delay) trong Android

Giới thiệu

Trong nhiều trường hợp, chúng ta cần cập nhật giao diện người dùng sau một khoảng thời gian nhất định. Ví dụ này minh họa cách tạo độ trễ (delay) trong Android bằng Handler.

Bước 1: Tạo dự án mới

Android Studio → File → New Project → Hoàn tất thiết lập.

Bước 2: Giao diện (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:id="@+id/parent"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textChanger"
        android:layout_margin="20dp"
        android:textAlignment="center"
        android:text="Văn bản ban đầu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

TextView ban đầu hiển thị "Văn bản ban đầu", sau độ trễ sẽ cập nhật thành văn bản mới.

Bước 3: Logic độ trễ (src/MainActivity.java)

package com.example.andy.myapplication;

import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    int view = R.layout.activity_main;
    TextView textChanger;

    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(view);

        textChanger = findViewById(R.id.textChanger);
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                textChanger.setText("Sau độ trễ, văn bản đã thay đổi");
            }
        }, 5000); // 5000ms = 5 giây
    }
}

Giải thích mã quan trọng

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        textChanger.setText("Sau độ trễ, văn bản đã thay đổi");
    }
}, 5000);
  • Handler: Cho phép gửi và xử lý các Message/Runnable trên luồng chính (UI thread)
  • postDelayed(Runnable, long delayMillis): Thực thi Runnable sau khoảng thời gian delayMillis (tính bằng milliseconds)
  • 5000: Độ trễ 5 giây
Lưu ý quan trọng: Từ API 30 (Android 11), Handler() constructor không tham số đã bị deprecated. Nên sử dụng new Handler(Looper.getMainLooper()) để rõ ràng hơn.

Chạy ứng dụng

Chạy app trên thiết bị thực. Ban đầu TextView hiển thị "Văn bản ban đầu". Sau 5 giây, văn bản tự động thay thành "Sau độ trễ, văn bản đã thay đổi".