2017-03-26 1 views
0

타이머를 통해 정확한 시간에 시작해야하는 백그라운드 서비스가 필요합니다.이 작업을 수행하는 다른 정확한 시간까지 계속 실행해야합니다. 활동의 사용자.타이머 및 액티비티 상호 작용이있는 Android 백그라운드 서비스

여러 타이머가 동시에 시작되면 서비스는 모든 작업을 병렬로 실행 한 다음 모든 작업이 끝날 때 자체를 중지해야합니다.

이 작업을 수행하기 위해 사용해야 할 사항은 무엇입니까? Service? IntentService? 배경 작업의 또 다른 유형? 그리고 나서 다른 사람들을 괴롭히지 않고 각 작업을 중단시킬 수 있습니까? 사용자가 원할 때 작업을 중지 할 수 있도록 이러한 서비스 인스턴스 각각을 데이터베이스 엔터티에 연결하는 방법이 있습니까?

답변

2

IntentService는 작업을 수행하는 데 도움이되지 않습니다. 한 번에 하나의 IntentService 인스턴스 만 존재합니다. 여러 이벤트가 시작되는 경우이 모든 이벤트는 연속적으로 실행될 대기열로 이동합니다. 따라서 병렬 실행 요구 사항이 여기에서 충족되지 않습니다.

가장 좋은 방법은 AsyncTask를 사용하여이 문제를 해결할 수 있다고 생각하는 것입니다. 타이머 완료시 AsyncTAsk를 실행하고 배경 작업을 doInBackGround에서 수행하고 원하는 경우 언제든지 작업을 취소하십시오. 또한 내부적으로 AsyncTask는 자체 스레드 풀을 유지 관리합니다. 따라서 다중 스레드 생성 및 리소스 막힘에 대해 걱정할 필요가 없습니다.

AsyncTask를 사용하면 몇 가지 문제가 발생할 수 있으며 취소 및 상태 변경 중에 몇 가지 문제가 발생할 수 있습니다. 우선 그것은 트릭을 할 것입니다.

은 참조 : 또한 https://developer.android.com/reference/android/os/AsyncTask.html

당신은 내가 RxAndroid 갈 말할 것 그 일을하는 가장 좋은 방법을 탐구하려는 경우. 그것은 AsyncTask의 모든 단점을 처리하고 모든 요구 사항을 아주 쉽게 채 웁니다. 안드로이드 비동기 프로그래밍을위한 모범 사례를 비교하면 다음과 같습니다. http://code.hootsuite.com/asynchronous-android-programming-the-good-the-bad-and-the-ugly/

참조 할 수 있습니다. https://github.com/ReactiveX/RxAndroid 많은 자습서가 있습니다.

+0

Rx Android는 모든 서비스 엉망진창에 대한 좋은 대안처럼 보입니다.이 작업을 시작하고 중지하는 방법을 이해하기 만하면됩니다 ... 감사합니다! – Alessandro

+0

도움이되기를 기쁘게 생각합니다 :) –

관련 문제