📅  最后修改于: 2023-12-03 15:13:21.744000             🧑  作者: Mango
在 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()
方法,我们可以轻松地检查当前是否有其他应用程序正在运行。我们可以搜索正在运行的服务和任务列表,然后检查它们是否包含指定的应用程序包名。如果找到这个包名,则应用程序正在运行,否则未运行。