如何在Android中检查所有正在运行的服务?

16

我想访问并查看后台运行的服务数量和哪些服务正在运行。

我希望能够访问与我们在Android手机或平板电脑上通过以下方式访问的完全相同的功能:

菜单 -> 设置 -> 应用程序 -> 运行的服务

有人可以告诉我在Android源代码中使用了哪些函数或类来提供此功能吗?

如果有任何方式可以访问我上面提到的内置后台运行服务列表,请告诉我,因为使用内置服务列表对我来说更好,而不是创建全新的服务列表。


我不知道这个解决方案是对还是错,但对我来说它很好用。 - Varundroid
5个回答

15

请查看此链接:

如何在6.0 Marshmallow及以上版本中访问Android的正在运行应用程序列表


在Android 6.0中查找正在运行的服务

在Android 5.x及以下版本中,您可以通过跳转到“设置”>“应用程序”>“正在运行”来查看正在发生的事情。这将显示运行中的进程和服务,以及系统和应用程序正在使用多少内存(RAM),以及还剩多少可用空间。


要在Marshmallow中找到相同的菜单,您首先需要启用开发人员选项。这可以通过转到“设置”,然后选择“关于手机”来完成。
一旦进入手机设置,找到软件信息部分。在某些手机(三星、LG)上,这将是一个单独的条目,但在其他手机上,如Nexus设备上,则不会有此选项。您要查找的是构建号,因此您可能需要在找到它之前四处探索一下。first two images below中的前两张图片来自三星Galaxy S7 Edge,最后一张来自Nexus 6P。正如您所看到的,构建位于两个不同的位置。

当你找到它时,请点击七次。您将看到一个Toast通知,告诉您“成为开发者”还剩多少次机会。一旦点击了七次,新的菜单将在主设置菜单中的“关于手机”上方解锁。
回到设置里,进入开发者选项。在这个菜单里,你应该可以看到“运行服务”——这就是你要找的东西。当你点击“运行服务”时,会出现一个熟悉的屏幕——它与棒棒糖(Lollipop)中的完全相同,只是位置不同。

我正在寻找Android 6,它帮了我。 - Junaed

7

这里是完整的答案。

步骤1:首先需要声明并初始化几个变量:

private static final String APP_DETAILS_PACKAGE_NAME = “com.android.settings”; // Here you need to define the  package name

private static final String SCREEN_CLASS_NAME = “com.android.settings.RunningServices”; // Here you need to define the class name but NOTICE!! you need to define its full name including  package name.

步骤2. 实例化一个意图(Intent)。
Intent intent = new Intent();

第三步。将操作设置为ACTION_VIEW。
intent.setAction(Intent.ACTION_VIEW);

第三步。在意图中设置类名,因为我们知道一个包中可能会有多个活动。所以Intent需要匹配包名称中的Activity。

intent.setClassName(APP_DETAILS_PACKAGE_NAME,  SCREEN_CLASS_NAME); //Here you need to set package name as well as class name so it could refer to the Package and IntentFilter of the given Activity.

步骤四. 启动活动

context.startActivity(intent); // As soon as this line will be executed Running Service screen will be displayed as a foreground activity.

在上面的例子中,如果您想要访问不同的屏幕,则根据您的需要更改APP_DETAILS_PACKAGE_NAME和SCREEN_CLASS_NAME。

我真的不知道这种方法是否有文档记录,但对我来说它非常有效。


这个方法适用于所有的安卓版本还是只适用于2.2以下(Froyo)?如果只适用于2.2以下,你知道如何在2.3及以上版本中实现吗?谢谢。 - user959631
啊,好的,谢谢。我该如何让它显示我的应用程序正在运行的进程/服务,而不是所有服务?有什么想法吗?这可能吗? - user959631

3

简单步骤

  1. 在您的设备上打开开发模式
  2. 进入开发设置,尝试找到"运行服务"
  3. 结果会显示运行服务列表

2
大概是在ActivityManager上调用了getRunningServices()。目前没有文档记录直接跳转到该屏幕的Intent

我刚在互联网上查了一下,市场上有一些应用程序,比如“高级任务管理器”,可以通过单击直接访问该屏幕,这意味着它们调用了与Android点击“正在运行的服务”时完全相同的函数。 - Varundroid
3
很好,但这并没有被记录或支持,所以你(和他们)不应该使用它。最接近已记录和支持的是android.provider.Settings上的ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS - CommonsWare

2

检查设备

1- 进入手机设置 2- 点击应用管理器 3- 向左滑动以查看正在运行的应用程序

在这里,您将找到正在运行的应用程序以及正在运行的服务,如附图所示:

enter image description here


2
Aleem,我是指以编程方式。感谢您回答这个6年前的问题。干杯! - Varundroid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接