我正在开发一个应用程序,我正在运行一些后台操作,并在特定条件满足时向用户显示通知。当用户点击通知时,应该将他带到主要活动,而无需重新启动服务。
我的问题是,当我点击通知时,它会将我带到主要活动并再次启动我的服务。我不想再次重启我的服务。我怎样才能实现这一点。
我已经使用以下代码检查运行或未租用服务的天气
public static boolean isServiceRunning(String serviceName,Context context){
boolean serviceRunning = false;
ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(50);
Iterator<ActivityManager.RunningServiceInfo> i = l.iterator();
while (i.hasNext()) {
ActivityManager.RunningServiceInfo runningServiceInfo = (ActivityManager.RunningServiceInfo) i
.next();
if(runningServiceInfo.service.getClassName().equals(serviceName)){
serviceRunning = true;
}
}
return serviceRunning;
}
答案 0 :(得分:0)
我已经使用了这段代码并且工作正常:)
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
{
if (MyService.class.getName().equals(service.service.getClassName()))
{
found = true;
}
}
答案 1 :(得分:0)
您可以检查活动的getIntent()
,并在您检查启动或不启动服务的通知的意图包上添加一些额外内容。
注意:
如果服务已在运行,则不会重新启动。
答案 2 :(得分:0)
Finally I have rectified my code.as follows
private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if ("com.example.sevicedemosolution.Myservice".equals(service.service.getClassName().toString())) {
return true;
}
}
return false;
}