我正在编写一个检查特定服务是否正在运行的服务。我每秒使用警报管理器调用checkService.class。 (这很好用)
在checkService.class中,我有以下代码:
private boolean isMyServiceRunning()
{
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
{
if (PhoneListnerService.class.getName().equals(service.service.getClassName()))
{
return true;
}
}
return false;
}
当它返回true时,我什么都不做。如果为false,我启动服务PhoneListnerService.class。这个过程第一次运行得很好,但如果我使用一些taskKiller应用程序杀死整个应用程序 - “isMyserviceRunning”仍显示 true 。
我相信taskKiller会杀死所有服务,BroadCastreceivers等 - 如果是这样的话,为什么显示 True 而不是显示 False ?
有人可以帮我吗?
谢谢!
答案 0 :(得分:0)
也许安卓没有完成停止服务。杀戮服务有不确定的行为。另一方面,您不必在启动服务之前检查服务是否正在运行。您可以使用该警报来启动服务。如果该服务已在运行,则onCreate
未被调用,但onStartCommand
已被调用。您可以做的是在从警报启动服务时在intent中添加一个变量,检查onStartCommand
中的变量并使用一些简单的逻辑来确定要做什么。
答案 1 :(得分:0)