如何检查我的应用程序是否仍在 Android 服务中 运行?
How to check if my app is still running in an Android service?
我开始使用 Delphi 10.1 Berlin 为我的应用程序开发一个 Android 粘性服务,但我还没有找到任何相关的教程或书籍,所以我问:
检测我的应用程序是否仍在 运行 或已被 OS/user 杀死的最简单方法是什么?
您可以通过包名查找进程id,看看它是否仍然活跃。
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> pids = am.getRunningAppProcesses();
int processid = 0;
for (int i = 0; i < pids.size(); i++) {
ActivityManager.RunningAppProcessInfo info = pids.get(i);
if (info.processName.equalsIgnoreCase("packageNameSearchingFor")) {
processid = info.pid; //found it, we are running
}
}
或者您可以简单地将共享值存储在 public 共享首选项或可通过 ContentProvider 访问的数据库中,该值在前台或后台进行检查时会更新。哪种方式都可以。
我开始使用 Delphi 10.1 Berlin 为我的应用程序开发一个 Android 粘性服务,但我还没有找到任何相关的教程或书籍,所以我问:
检测我的应用程序是否仍在 运行 或已被 OS/user 杀死的最简单方法是什么?
您可以通过包名查找进程id,看看它是否仍然活跃。
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> pids = am.getRunningAppProcesses();
int processid = 0;
for (int i = 0; i < pids.size(); i++) {
ActivityManager.RunningAppProcessInfo info = pids.get(i);
if (info.processName.equalsIgnoreCase("packageNameSearchingFor")) {
processid = info.pid; //found it, we are running
}
}
或者您可以简单地将共享值存储在 public 共享首选项或可通过 ContentProvider 访问的数据库中,该值在前台或后台进行检查时会更新。哪种方式都可以。