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

특정 서비스가 다른 앱에서 실행되고 있는지 알 수 있나요 ?

0 추천
예를들어 AutoConstruct 라는 라이브러리를 사용하는 어플들이 있을 때

라이브러리 내에서 동작하는 Construct 라는 서비스가 동작중인지 알 수 있는 방법이 있나요 ?

A 자사 어플이고 B 어플은 협력사 어플입니다 (signing key는 다름)

 

제가 만든 라이브러리가 등록된 어플에서 서비스가 돌아가야하는데

해당 라이브러리를 사용하는 어플이 여러개 설치되어 있을 시, 중복되는 작업을 막기 위함입니다.

어떻게 구현해 줘야할지 조언 부탁드립니다
음무 (17,820 포인트) 님이 2015년 11월 25일 질문

2개의 답변

+1 추천
 
채택된 답변
해당 서비스가 동작하는 앱을 따로 만들어 배포하고, 다른 앱에서는 해당 서비스를 사용하게 수정하세요.
익명사용자 님이 2015년 11월 25일 답변
음무님이 2015년 11월 25일 채택됨
다른앱에서 해당 앱의 서비스를 어떻게 사용할 수 있나요 ?
해당 서비스를 android:exported로 선언하고 AIDL 등을 이용하면 됩니다.
더 자세한 것은 인터넷 검색하면 많이 나옵니다.
+1 추천
ActivityManager localActivityManager = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> services = localActivityManager .getRunningServices(100);

for (ActivityManager.RunningServiceInfo service : services) {
            s.o.p("service name : " + service.service.getClassName());
}

서비스명은 아실테니 그냥 이걸로 service리스트 뽑아서 확인하시면 되지 않나요?
익명사용자 님이 2015년 11월 25일 답변
서비스를 공유하는 방법은 없을까요 ?

라이브러리를 사용하는 모든 어플에 동작중인 서비스를 체크하는 소스코드를 추가하기는 힘들것같습니다.

그냥 서비스를 실행시키고, 이미 다른 앱에서 해당 서비스를 실행중이라면 서비스가 새로 생성되지 않고 onStartCommand로 들어가는 이런 방식이 가능할까요 ?
...