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

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

如何检查后台服务是否正在运行?

我想要一个Android活动来切换服务的状态-它允许我打开它,如果它是关闭的,如果它是开着的。


扬帆大鱼
浏览 616回答 3
3回答

九州编程

不久前我也遇到了同样的问题。由于我的服务是本地的,所以我只需使用服务类中的静态字段来切换状态,正如hackbod所描述的那样。这里编辑(用于记录):下面是hackbod提出的解决方案:如果您的客户端和服务器代码是同一个.apk的一部分,并且您有一个具体的意图(指定确切的服务类)绑定到服务,那么您只需在服务运行时设置一个全局变量,客户端就可以检查它。我们故意没有API来检查服务是否正在运行,因为几乎没有失败,当您想要这样做时,代码中就会出现争用条件。

元芳怎么了

明白了!你,你们必打电话startService()以便正确注册和传递您的服务BIND_AUTO_CREATE是不够的。Intent&nbsp;bindIntent&nbsp;=&nbsp;new&nbsp;Intent(this,ServiceTask.class);startService(bindIntent);bindService(bindIntent,mConnection,0);现在,ServiceTools类:public&nbsp;class&nbsp;ServiceTools&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;String&nbsp;LOG_TAG&nbsp;=&nbsp;ServiceTools.class.getName(); &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;boolean&nbsp;isServiceRunning(String&nbsp;serviceClassName){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;ActivityManager&nbsp;activityManager&nbsp;=&nbsp;(ActivityManager)Application.getContext().getSystemService(Context.ACTIVITY_SERVICE); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;List<RunningServiceInfo>&nbsp;services&nbsp;=&nbsp;activityManager.getRunningServices(Integer.MAX_VALUE); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(RunningServiceInfo&nbsp;runningServiceInfo&nbsp;:&nbsp;services)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(runningServiceInfo.service.getClassName().equals(serviceClassName)){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android