在android中监控服务[重复]

Posted

技术标签:

【中文标题】在android中监控服务[重复]【英文标题】:Monitor services in android [duplicate] 【发布时间】:2012-11-11 20:08:31 【问题描述】:

可能重复:android: check if a service is running

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

是否还有其他动作过滤器可以广播、服务是否运行?

【问题讨论】:

“它将无限期地在后台运行”——为什么?用户一般不喜欢这样,这就是为什么用户会通过任务杀手、设置中的“强制停止”等摆脱你的服务。 @CommonsWare 如果用户“强制停止”服务,是否可以获得通知? 绝对不是。通过强制停止您的应用程序,用户表示用户不希望您的应用程序再运行,因为您的应用程序行为不端。您的进程将立即终止,并且您不会收到此事实的通知。所以,我再问一次:为什么你有一个“将在后台无限期运行”的服务? @CommonsWare 我想在一项服务中阻止摄像头进程,并想查看另一项服务是否正在运行。如果没有,我想再次重新启动服务 “我想在一项服务中阻止摄像头进程”——才华横溢的程序员使用设备管理 API 来控制对摄像头的访问,而不是玩带有进程和永久服务的幼稚脚本小游戏。 【参考方案1】:
Presumably, it is calling getRunningServices() on ActivityManager. There is no documented Intent to go straight to that screen.

第 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();

步骤 3. 将操作设置为 ACTION_VIEW

intent.setAction(Intent.ACTION_VIEW);

步骤 3. 在 Intent 中设置类名,因为我们知道包可以有多个活动。所以 Intent 需要一些东西来匹配包名中的 Activity。

intent.setClassName(APP_DETAILS_PACKAGE_NAME,  SCREEN_CLASS_NAME);

第 4 步。启动 Activity

context.startActivity(intent);

在上面的示例中,如果您想访问其他屏幕,请根据需要更改 APP_DETAILS_PACKAGE_NAME 和 SCREEN_CLASS_NAME。

【讨论】:

【参考方案2】:

您可以使用getRunningServices(int max)ActivityManager

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

int max = ??;

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

for(ActivityManager.RunningServiceInfo runningService : runningServices)


   boolean started = runningService.started;

注意:此方法仅用于调试或实现服务管理类型的用户界面。

【讨论】:

我想知道,服务停止时是否有任何通知可用?..或者我想在无限时间内在服务中检查此方法?

以上是关于在android中监控服务[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Android中监控home键

监控库中的位置设置

Android GCM 投放监控

如何在 Android 的后台监控电池电量?

在 Android 中监控与多个位置的距离最省电的方法是啥?

Inotify与Android文件监控FileObserver原理