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

Cách kiểm tra ứng dụng Android có đang chạy trong nền không?

Giới thiệu

Bài viết này hướng dẫn cách kiểm tra xem một ứng dụng Android có đang chạy ở chế độ nền (background) hay không. Chúng ta sẽ sử dụng ActivityManager để lấy trạng thái tiến trình của ứng dụng.

Các bước thực hiện

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

Mở Android Studio, chọn File → New Project và điền đầy đủ thông tin để tạo dự án mới.

Bước 2: Thiết kế giao diện (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:padding="4dp"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:textStyle="bold"
        android:layout_centerInParent="true"
        android:text="Kiểm tra ứng dụng Android chạy trong Background" />
</RelativeLayout>

Bước 3: Viết logic kiểm tra (src/MainActivity.java)

import androidx.appcompat.app.AppCompatActivity;
import android.app.ActivityManager;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    Boolean appRunningBackground;

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

        ActivityManager.RunningAppProcessInfo runningAppProcessInfo = new ActivityManager.RunningAppProcessInfo();
        ActivityManager.getMyMemoryState(runningAppProcessInfo);
        
        // Kiểm tra xem ứng dụng có đang chạy ở foreground không
        appRunningBackground = runningAppProcessInfo.importance != ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND;

        if (appRunningBackground) {
            Toast.makeText(getApplicationContext(), "Ứng dụng Android của bạn đang chạy trong Background", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(), "Ứng dụng Android của bạn KHÔNG chạy trong Background", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        Toast.makeText(getApplicationContext(), "Ứng dụng Android của bạn đang chạy trong Background", Toast.LENGTH_SHORT).show();
    }
}

Bước 4: Cấu hình Manifest (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>

Chạy ứng dụng

Kết nối thiết bị Android thật với máy tính, nhấn nút Run trên toolbar Android Studio, chọn thiết bị và quan sát kết quả hiển thị trên màn hình.

Cách kiểm tra ứng dụng Android có đang chạy trong nền không?

Giải thích kỹ thuật

Phương pháp sử dụng ActivityManager.getMyMemoryState() để lấy thông tin tiến trình hiện tại. Thuộc tính importance của RunningAppProcessInfo cho biết mức độ ưu tiên của tiến trình:

  • IMPORTANCE_FOREGROUND: Tiến trình đang chạy ở foreground (người dùng đang tương tác)
  • Các giá trị khác: Tiến trình đang chạy ở background

Lưu ý: Cách này hoạt động tốt trên các phiên bản Android cũ. Trên Android 10+ (API 29+), việc truy xuất danh sách tiến trình bị hạn chế do chính sách quyền riêng tư.