2012-08-10 3 views
0

여러 조각으로 된 ActionBar 탭을 사용합니다. 각 조각에는 내 타이머 서비스를 기반으로하는 타이머가 들어 있습니다. 내 첫 번째 타이머 (타이머 서비스 중지)를 중지하면 두 번째 타이머도 멈추고 같은 서비스를 실행하고 있기 때문입니다.동일한 서비스를 사용하는 여러 타이머

다른 조각이 서비스를 사용하고 있는지 또는 각 타이머마다 개별 서비스를 시작했는지 구분할 수 있습니까? 아니면 다른 방법이 있습니까?

저는 지금 당분간 해결책을 찾고 있는데, 지금은 조금 잃어 버렸습니다.

+0

"타이머"란 무엇입니까? Java 'Timer' 클래스 또는 타이머 역할을하는 일반 기능을 의미합니까? – DeeV

+1

서비스는 하나의 인스턴스 만 가질 수 있습니다. 같은 서비스의 여러 인스턴스를 시작할 수 없습니다. 타이머는 활동이 사용 중일 때만 필요합니까 아니면 백그라운드에서 필요합니까? –

+0

@DeV이 서비스는 브로드 캐스트 서비스와 1 초마다 uv를 업데이트하기 위해 제 fragmants를 알리는 실행 파일을 사용합니다. 이 방법을 사용하면 전화기를 사용하지 않아도 타이머를 실행할 수 있습니다 (onPause는 bradcastservice를 해제합니다). – aelveborn

답변

0

코드를 보지 않고 : startService 메서드 호출은 서비스가 실행되고 있지 않으면 서비스를 시작하거나 서비스가 이미 시작된 경우 onStartCommand을 호출합니다. 타이머가 시작되면 startService을 호출하고 값을 증가시킬 수 있습니다 (예 : 라이브 타이머를 나타내는 int 값). 타이머를 중지/종료해야 할 때 Service (그림과 같이)에 BroadcastReceiver을 구현하여 다른 구성 요소에서 오는 "닫기"방송을 청취 할 수 있습니다 (이 패턴을 사용하여 Service에 알릴 수 있음). 새로운 타이머가 시작되었습니다 ("시작"방송). 에서 해당 BroadcastReceiver에서

Service 당신이 라이브 타이머가 카운트 이런 경우 다음 Service을 중지하는 경우는, 0에 있는지 감소 것입니다.

위의 접근 방식의 주된 문제점은 다른 활동이 종료되고 다시 시작되지 않아도 신뢰할 수있는 타이머를 닫을 때입니다 (다른 활동이 종료되고 종료되지 않는 경우). 서비스가 일부 등록 된 타이머와 함께 남아있을 수 있으며 서비스가 무기한 실행되는 것을 원하지 않을 것입니다.) 이를 해결하기 위해서는 실제 코드에 대한 자세한 정보가 필요합니다.

+0

안녕하세요. 답변을 주셔서 감사합니다. 위와 같은 방식으로 구현했습니다. 예를 들어 백 버튼을 누르면 서비스가 계속 실행되는데 문제가있었습니다. 내일 일부 코드로 업데이트 할 예정입니다. – aelveborn

관련 문제