为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查服务是否运行在Android上?

如何检查服务是否运行在Android上?

扬帆大鱼 2019-06-05 14:41:21
如何检查服务是否运行在Android上?如何检查后台服务是否正在运行?我想要一个Android活动来切换服务的状态-它允许我打开它,如果它是关闭的,如果它是开着的。
查看完整描述

3 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

不久前我也遇到了同样的问题。由于我的服务是本地的,所以我只需使用服务类中的静态字段来切换状态,正如hackbod所描述的那样。这里

编辑(用于记录):

下面是hackbod提出的解决方案:

如果您的客户端和服务器代码是同一个.apk的一部分,并且您有一个具体的意图(指定确切的服务类)绑定到服务,那么您只需在服务运行时设置一个全局变量,客户端就可以检查它。

我们故意没有API来检查服务是否正在运行,因为几乎没有失败,当您想要这样做时,代码中就会出现争用条件。


查看完整回答
反对 回复 2019-06-05
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

明白了!

你,你们打电话startService()以便正确注册和传递您的服务BIND_AUTO_CREATE是不够的。

Intent bindIntent = new Intent(this,ServiceTask.class);startService(bindIntent);bindService(bindIntent,mConnection,0);

现在,ServiceTools类:

public class ServiceTools {
    private static String LOG_TAG = ServiceTools.class.getName();

    public static boolean isServiceRunning(String serviceClassName){
        final ActivityManager activityManager = (ActivityManager)Application.getContext().getSystemService(Context.ACTIVITY_SERVICE);
        final List<RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE);

        for (RunningServiceInfo runningServiceInfo : services) {
            if (runningServiceInfo.service.getClassName().equals(serviceClassName)){
                return true;
            }
        }
        return false;
     }}


查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 615 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信