2011-09-13 4 views
2

내 앱에 작업을 제출할 수있는 백그라운드 서비스가 필요합니다. 작업은 매우 일반적 일 수 있습니다. 피드를 다운로드하거나, 위치를 한 번 가져 오거나, 리소스를 가져 오는 작업이 포함될 수 있습니다.이 서비스는 활동과 최소한의 상호 작용을 필요로하며 앱이 시작될 때 시작되어야하며 작업이 보류중인 경우 종료해야합니다. 열.작업 대기열이있는 Android 백그라운드 서비스

좋은 생각인가요? 그런 서비스를 어떻게 설계 할 수 있습니까? 모든 제안은 환영합니다

답변

4

이 아키텍처를 기대하는 것은 당신을 도울 것입니다 :

  1. 당신이 당신의 활동이 다음 사용 작업이 완료하자마자 모든 작업을 종료하려면 다음 다른 startService()을 사용 종료 후에도 작업을 수행하려면 bindService().

  2. 당신이 호출 할 때 서비스가 이미 실행되고 있지만 onStartCommand()는 당신이 startservice()를 호출 할 때마다 호출되는 경우 자사에서 OnCreate() 메소드가 호출되지 않습니다 startservice(). 이 속성을 사용할 수 있습니다.

  3. 액티비티에서 액세스 할 수있는 정적 메서드를 구현하여 정적 메서드로 호출하면 작업을 실행하는 스레드를 시작할 수 있습니다.

참고 : 서비스에서 모든 리소스 (스레드 등)를 해제하는 것을 잊지 마세요. 안드로이드가 귀하를 대신하지 않을 것입니다.

작업이 완료되면 작업 실행이 완료되고 stopSelf()을 사용하여 모든 리소스를 해제 할 수 있습니다.

필요에 따라 IntentService를 시험해 볼 수 있습니다. 자세한 내용은 this을 확인하십시오.

0

요청을 한 번에 하나씩 처리해야하는 경우 IntentService가 도움이 될 수 있습니다. 이들은 자동으로 작업자 스레드에 대기합니다.

0

Android 라이브러리 Goro이 도움이 될 수 있습니다.

여러 대기열에서 작업을 구성하고 서비스 컨텍스트로 실행할 수 있습니다. 기본적으로 AsyncTask에 사용 된 동일한 스레드 풀을 사용하여 실제로 작업을 실행합니다.