Giới thiệu
Hướng dẫn này trình bày cách lấy danh sách các task (nhiệm vụ) đang chạy trong Android sử dụng ActivityManager. Lưu ý: Từ API 21+, cách này chỉ trả về task của ứng dụng hiện tại do hạn chế bảo mật.
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 thông tin cần thiết.
Bước 2: Thiết kế 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"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
</LinearLayout>
Bước 3: Viết logic xử lý (src/MainActivity.java)
package app.com.sample;
import android.app.ActivityManager;
import android.content.Context;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.List;
import java.util.Objects;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.textView);
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
// Lấy danh sách AppTask (chỉ task của app hiện tại từ API 21+)
List<ActivityManager.AppTask> tasks = Objects.requireNonNull(activityManager).getAppTasks();
StringBuilder result = new StringBuilder();
for (ActivityManager.AppTask task : tasks) {
String taskValue = "Ứng dụng đang chạy: " + task.getTaskInfo().baseActivity.toShortString()
+ "\tID: " + task.getTaskInfo().taskId + "\n";
result.append(taskValue);
}
textView.setText(result.toString());
}
}
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>
Lưu ý quan trọng
- Từ Android 5.0 (API 21),
getRunningTasks()vàgetRunningAppProcesses()bị giới hạn chỉ trả về thông tin của ứng dụng gọi - Để lấy thông tin tiến trình khác, cần quyền
android.permission.PACKAGE_USAGE_STATSvà người dùng phải cấp quyền trong Settings - Phương pháp
getAppTasks()chỉ trả về task của ứng dụng hiện tại
Chạy ứng dụng
Kết nối thiết bị Android, nhấn Run trong Android Studio để xem danh sách task của ứng dụng.
