📌  相关文章
📜  android 检查应用程序是否正在运行 - Java (1)

📅  最后修改于: 2023-12-03 15:13:21.744000             🧑  作者: Mango

Android 检查应用程序是否正在运行 - Java

在 Android 应用程序中,可以使用 ActivityManager 类的 getRunningServices() 方法和 getRunningTasks() 方法来检查当前是否有其他应用程序正在运行。以下是如何在 Android 中使用 Java 语言检查应用程序是否正在运行的简单示例:

检查应用程序是否正在运行
import android.app.ActivityManager;
import android.content.Context;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

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

        // 要检查的应用程序包名
        String packageName = "com.example.myapp";

        // 获取 ActivityManager
        ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);

        // 获取正在运行的服务列表
        List<ActivityManager.RunningServiceInfo> runningServices = activityManager.getRunningServices(Integer.MAX_VALUE);

        // 检查服务列表中是否存在要检查的应用程序包名
        boolean isServiceRunning = false;
        for (ActivityManager.RunningServiceInfo service : runningServices) {
            if (service.service.getPackageName().equals(packageName)) {
                isServiceRunning = true;
                break;
            }
        }

        // 获取正在运行的任务列表
        List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);

        // 检查任务列表中是否存在要检查的应用程序包名
        boolean isTaskRunning = false;
        for (ActivityManager.RunningTaskInfo task : runningTasks) {
            if (task.topActivity.getPackageName().equals(packageName)) {
                isTaskRunning = true;
                break;
            }
        }

        // 输出检查结果
        if (isServiceRunning || isTaskRunning) {
            Toast.makeText(this, "应用程序正在运行!", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "应用程序未运行。", Toast.LENGTH_SHORT).show();
        }
    }
}

在上面的示例中,我们首先获取 ActivityManager 的实例,然后使用 getRunningServices() 方法和 getRunningTasks() 方法获取当前正在运行的服务和任务。然后,我们搜索这些列表,检查它们是否包含指定的应用程序包名。如果包含指定包名的服务或任务,则应用程序正在运行,否则未运行。

权限要求

请注意,在 Android 应用程序中使用 ActivityManager 类时,需要添加以下权限到 AndroidManifest.xml 文件中:

<uses-permission android:name="android.permission.GET_TASKS" />
结论

通过使用 ActivityManager 类的 getRunningServices() 方法和 getRunningTasks() 方法,我们可以轻松地检查当前是否有其他应用程序正在运行。我们可以搜索正在运行的服务和任务列表,然后检查它们是否包含指定的应用程序包名。如果找到这个包名,则应用程序正在运行,否则未运行。