코드를 보지 않고 : startService
메서드 호출은 서비스가 실행되고 있지 않으면 서비스를 시작하거나 서비스가 이미 시작된 경우 onStartCommand
을 호출합니다. 타이머가 시작되면 startService
을 호출하고 값을 증가시킬 수 있습니다 (예 : 라이브 타이머를 나타내는 int
값). 타이머를 중지/종료해야 할 때 Service
(그림과 같이)에 BroadcastReceiver
을 구현하여 다른 구성 요소에서 오는 "닫기"방송을 청취 할 수 있습니다 (이 패턴을 사용하여 Service
에 알릴 수 있음). 새로운 타이머가 시작되었습니다 ("시작"방송). 에서 해당 BroadcastReceiver
에서
Service
당신이 라이브 타이머가 카운트 이런 경우 다음 Service
을 중지하는 경우는, 0
에 있는지 감소 것입니다.
위의 접근 방식의 주된 문제점은 다른 활동이 종료되고 다시 시작되지 않아도 신뢰할 수있는 타이머를 닫을 때입니다 (다른 활동이 종료되고 종료되지 않는 경우). 서비스가 일부 등록 된 타이머와 함께 남아있을 수 있으며 서비스가 무기한 실행되는 것을 원하지 않을 것입니다.) 이를 해결하기 위해서는 실제 코드에 대한 자세한 정보가 필요합니다.
"타이머"란 무엇입니까? Java 'Timer' 클래스 또는 타이머 역할을하는 일반 기능을 의미합니까? – DeeV
서비스는 하나의 인스턴스 만 가질 수 있습니다. 같은 서비스의 여러 인스턴스를 시작할 수 없습니다. 타이머는 활동이 사용 중일 때만 필요합니까 아니면 백그라운드에서 필요합니까? –
@DeV이 서비스는 브로드 캐스트 서비스와 1 초마다 uv를 업데이트하기 위해 제 fragmants를 알리는 실행 파일을 사용합니다. 이 방법을 사용하면 전화기를 사용하지 않아도 타이머를 실행할 수 있습니다 (onPause는 bradcastservice를 해제합니다). – aelveborn