2012-03-26 2 views
8

안드로이드에서 여러 서비스 인스턴스를 가질 수 있습니까? 특정 시간에 전화를 끊을 수있는 서비스가 필요하며 특정 시간에 진동 모드로 전화를 걸기 위해 해당 서비스를 다시 사용하고 싶습니다. 기본적으로 서비스를 여러 번 실행할 수 있다면 진동 모드에서 전화를 설정하기 위해 다른 서비스를 만들 필요가 없습니다. 또한 여러 인스턴스를 실행할 수 있다면 중지 방법을 설명하십시오. 모든 코드 힌트가 도움이 될 것입니다.안드로이드에서 여러 서비스 인스턴스를 갖는 방법

답변

25

Android의 서비스 인스턴스를 여러 개 가질 수 있습니까?

번호 당신은 Service의 여러 하위 클래스를 가질 수 있지만, Service의 특정 서브 클래스는 어떤 주어진 순간에 정확히 0 또는 1 인스턴스를해야합니다.

특정 시간에 전화를 끊을 수있는 서비스가 필요하며 특정 시간에 진동 모드로 전화를 걸기 위해 해당 서비스를 다시 사용하고 싶습니다.

이러한 서비스에는 서비스를 사용하지 않아야합니다. AlarmManagerBroadcastReceiver을 사용하십시오.

+0

감사합니다. AlarmManager를 사용하여 일정 시간 간격으로 서비스를 시작합니다. BroadcastReceiver를 이해하고 AlarmManager를 사용하여이를 사용하는 방법을 알려주십시오. –

+0

@SumitSahoo :'getService()'를 호출하여'PendingIntent'를 생성하는 대신'getBroadcast()'를 호출하십시오. 그리고 비즈니스 논리가 '서비스'에있는 대신 BroadcastReceiver (보통 요소를 통해 매니페스트에 등록됨)에 있습니다. – CommonsWare

2

나는 그런 목적으로 서비스를 사용할 수 있다고 생각하지 않습니다. 서비스는 몇 가지 기능을 제공해야하지만 여러 가지 목적을위한 것이 아니라 하나의 의미 만 제공해야합니다. 코드를 간단하고 명확하게 유지하기 위해 추가 서비스를 만드는 것이 좋습니다.

2

질문에 이상이 없습니다. 같은 서비스를 여러 인스턴스로 실행하고 한 번에 여러 가지 작업을 수행하려는 것 같습니다. 그러나 귀하의 질문은 근본적으로 서비스가 오랜 시간에 일을해서는 안된다는 사실에 달려 있습니다. 대신, 의도는 그들이 의도를 받고, 아마도 스레드 또는 무언가를 생성 한 다음 매달리는 것을 중지해야한다는 것입니다. 서비스는 여전히 메인 스레드에서 실행되며, 백그라운드 작업이 아니므로 어쨌든 장기간 수행하지 않아야합니다. 당신이 바라는 것은 IntentService로서, 일어날 일을 제어하는 ​​인 텐트를 사용하여 활동과 조정합니다.

관련 문제