2013-01-11 3 views
2

서비스를 제공하는 UART (Serial Comms)와 다른 UI를 유지하기 위해 별도의 작업자 스레드가 필요한 다른 "작업"이있는 애플리케이션이 있습니다. 내 문제는 언제 어디에서이 스레드를 만들어야하는지, 언제 종료되는지를 이해하는 것입니다. 현재, 나는 그것들을 메인 UI 활동의 OnCreate()에서 만들고 있습니다. 그러나 이것은 내가 최근에 한 액티비티에서 다시 주 액티비티로 "점프"해야 할 필요가 있기 때문에 피로감을 유발합니다. 그 권장 사항은 Intent와 StartActivity()를 "clear to top"에 적절한 플래그와 함께 사용하는 것이 었습니다. 그러나 이것은 물론 내 스레드에 대한 완전히 새로운 인스턴스 집합을 발생시키고 모든 것이 해결됩니다. 어떻게하면 내 UI에 묶여있는 서비스를 사용해야할까요? 내 응용 프로그램의 OnCreate()를 가질 수 있도록 기본 응용 프로그램을 서브 클래 싱했습니다. 나는 그쪽으로 기울고 있지만 응용 프로그램 대 활동의 수명주기를 파악할 수는 없습니다.안드로이드 워커 쓰레드와 애플리케이션 라이프 사이클

답변

2

서비스를 이용하십시오. 특정 활동에 본질적으로 붙어 있지 않은 과제가 있습니다.

startService으로 장기 실행 작업을 시작할 수 있으며 서비스가 끝날 때까지 서비스가 종료되지 않습니다. 한편, Context#bindService은 서비스가 바인딩되어있는 한 계속 서비스를 유지합니다.

안드로이드 동시 프로그래밍의
2

일반 규칙

  • 당신은 당신이 떨어져 일이 있으면 그것을
  • 를 사용할 때 AsyncTask를 만들어 사용, UI 스레드 떨어져 무언가를하고 결과를 반환해야하는 경우 일부 작업 (웹 서비스 요청 게시)을 수행하려면 AsyncTask를 사용하십시오.
  • 단일 활동 내에서 반복적으로 작업을 수행하려고하지만 활동이 삭제되거나 다른 서비스로 데이터를 전송 한 후에 실행할 필요가없는 경우, 스레드를 사용하십시오.
  • ta 여러 활동에, 서비스를 사용하십시오.
  • 시작 활동이 끝나기 전후에 실행해야하는 경우 서비스를 사용하십시오.
관련 문제