마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Service 와 Intent.FLAG_ACTIVITY_NEW_TASK

0 추천

Service를 시작할때..

startService로 시작하면 서비스가 시작되죠.

그런데 여기서 startService를 다시 호출하면 또 다른 서비스가 시작되나요?

제가..로그를 찍어가며 확인해본 바로는...이미 서비스가 동작중이면, startService 를 해도 서비스가 실행중이면 새로운 서비스를 실행시키지 않고 이전 서비스를 재사용(?) 하는것 같더라구요.

 

그런데 여기서 Flag를 NEW_TASK 로 줘서 서비스를 실행시키면 

startService 를 실행시킨것 만큼 서비스가 늘어나는 것 같더라구요

(새로운 프로세스를 계속 생성? 헷갈립니다. ㅠㅠ 로그상으로는 계속 늘어나는 것 처럼 보였습니다..)

 

하지만..Activity가 아닌곳에서 서비스를 시작하려면 NEW_TASK flag를 줘야 하는것으로 알고있습니다..

 

new task flag를 이용하여 계속 startService하면 호출한 만큼 서비스가 생성이 되나요?

안드로이드로우 (15,740 포인트) 님이 2015년 2월 10일 질문

1개의 답변

+1 추천
 
채택된 답변

네 중복실행될 수 있습니다.

그래서 서비스는 실행하기전에 먼저 실행중인지를 체크해주셔야 합니다.

serviceName 에는 서비스 풀경로를 써주시면 됩니다 com.aaaa.service 이런식으로 서비스 풀경로

//서비스가 돌고 있는지 확인
	private boolean isServiceRunning(String serviceName)
	{
		ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
		List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(Integer.MAX_VALUE);
		Iterator<ActivityManager.RunningServiceInfo> i = l.iterator();
		while (i.hasNext())
		{
		ActivityManager.RunningServiceInfo runningServiceInfo = (ActivityManager.RunningServiceInfo) i
		.next();
		if (runningServiceInfo.service.getClassName().equals(serviceName)) { return true; }
		}
		return false;
	}

 

 

하늘아륑 (16,800 포인트) 님이 2015년 2월 11일 답변
안드로이드로우님이 2015년 2월 11일 채택됨
감사합니다......................ㅠㅠ
...