【发布时间】:2017-10-22 09:29:28
【问题描述】:
前台服务已启动并立即绑定到。有没有办法知道服务是否已停止或在活动重新启动后仍在运行。无论如何,安全的方法是执行startService,但是有更干净的方法吗?
【问题讨论】:
-
不行,没有别的办法
标签: android android-activity android-service android-service-binding
前台服务已启动并立即绑定到。有没有办法知道服务是否已停止或在活动重新启动后仍在运行。无论如何,安全的方法是执行startService,但是有更干净的方法吗?
【问题讨论】:
标签: android android-activity android-service android-service-binding
您可以通过以下方式使用此方法:
https://stackoverflow.com/a/6452570/5457878
检查您的服务是否仍在运行。你可以在你的onResume()或者onCreate()中调用这个方法,如果没有运行,我会重启它。
private boolean isServiceRunning(String serviceName){
boolean serviceRunning = false;
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(50);
Iterator<ActivityManager.RunningServiceInfo> i = l.iterator();
while (i.hasNext()) {
ActivityManager.RunningServiceInfo runningServiceInfo = i
.next();
if(runningServiceInfo.service.getClassName().equals(serviceName)){
serviceRunning = true;
if(runningServiceInfo.foreground)
{
//service run in foreground
}
}
}
return serviceRunning;
}
【讨论】: