Java android中的监控服务

Java android中的监控服务,java,android,Java,Android,可能重复: 我有一个服务来执行我的操作,它将在后台无限期运行。我想监视服务是否正在运行。所以,我想创建另一个服务来监视第一个服务 是否有其他动作过滤器可以播放、服务是否正在运行?您可以使用ActivityManager ActivityManager actManager=//获取活动管理器 int max = ??; List<ActivityManager.RunningServiceInfo> runningServices = actManager.getRunningS

可能重复:


我有一个服务来执行我的操作,它将在后台无限期运行。我想监视服务是否正在运行。所以,我想创建另一个服务来监视第一个服务

是否有其他动作过滤器可以播放、服务是否正在运行?

您可以使用ActivityManager

ActivityManager actManager=//获取活动管理器

int max = ??;

List<ActivityManager.RunningServiceInfo> runningServices = actManager.getRunningServices(max);

for(ActivityManager.RunningServiceInfo runningService : runningServices)
{

   boolean started = runningService.started;
}
注意:此方法仅用于调试或实现服务管理类型的用户界面

Presumably, it is calling getRunningServices() on ActivityManager. There is no documented Intent to go straight to that screen.
第一步。首先,您需要声明和初始化几个变量:-

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.
第二步。举例说明意图

Intent intent = new Intent();
第三步。将Action设置为Action\u视图

intent.setAction(Intent.ACTION_VIEW);
第三步。在intent中设置类名,因为我们知道包可以有多个活动。因此,Intent需要与包名称中的活动相匹配

intent.setClassName(APP_DETAILS_PACKAGE_NAME,  SCREEN_CLASS_NAME);
第四步。开始活动

context.startActivity(intent);

在上面的例子中,如果你想访问一些不同的屏幕,然后根据你的需要更改应用程序\u详细信息\u包\u名称和屏幕\u类\u名称。

我想知道,服务停止时是否有可用的通知?。或者我想在有限时间内在服务中检查此方法?它将在后台无限时间运行-为什么?用户通常不喜欢这一点,这就是为什么用户会通过任务杀手、强制停止设置等方式放弃您的服务@commonware如果用户“强制停止”服务,是否有可能获得通知?绝对不会。通过强制停止您的应用程序,用户表示用户不希望您的应用程序再运行,因为您的应用程序行为不正常。您的流程将立即终止,并且不会通知您这一事实。所以,我再次问:为什么有一个服务会在后台无限期运行?@commonware我想在一个服务中阻止摄像头进程,并想观察另一个服务是否在运行。如果不是,我想重新启动服务,我想在一个服务中阻止摄像头进程-有才华的程序员使用设备管理API来控制对摄像头的访问,而不是玩带有进程和永久服务的幼稚脚本儿童游戏。