2014-12-13 49 views
1

我为我的应用程序提供前台服务,该服务必须运行整个时间并且永不停止。虽然我测试了几次,但在3-4天后,Android决定停止它,并且再也不会重新启动它,并且在我的活动中,如果服务正在运行,并且它没有启动它。 即使服务没有启动,我也无法调试它,因为这不是偶然发生的。 这是我的支票,有没有错吗?由Android停止的前台服务以后不会重新启动

if (!isMyServiceRunning(MyService.class)) { 
     startService(new Intent(this, MyService.class)); 
} 

private boolean isMyServiceRunning(Class<?> serviceClass) { 
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if (serviceClass.getName().equals(service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 

我所说的活动)中的onResume此检查(和活动开始时,我不能只是运行它每次,因为我有一个不断运行的线程的服务,这将让不止一个例如,如果多次启动...

所以这里就是我想: 要么有更可靠的方式来检查的服务,如果其运行 或 只需启动该服务每次活动开始时间,防止出现问题,并且它内部的线程必须总是只有一个实例(我已经声明为静态)

回答

1

Activity开始/恢复时,您可以使您的服务Bindable和绑定您的Activity到服务。这样你就可以确定服务正在运行。但我认为你的服务有问题。我希望您发布有关该服务的更多信息?操作系统无法正常杀死没有痕迹的前台服务。

+0

你需要知道什么? – 2014-12-13 09:30:21

+0

你可以粘贴启动服务的代码吗? – 2014-12-13 09:30:57

+0

你的意思是onStartCommand方法吗? – 2014-12-13 09:38:10

相关问题