백그라운드 스레드가 작동하는 방식을 이해하려고합니다. 내 활동에서 배경 스레드를 호출 오전 및이 활동뿐만 아니라 내 스레드 처리기를 구현합니다. 배경 스레드가 실행되는 동안 사용자가 작업 b로 이동한다고 가정 해 보겠습니다. 백그라운드 스레드가 작업을 마치면 어떻게됩니까? 응용 프로그램의 모든 단일 활동에 처리기를 구현해야합니까? 아니면 작업 a의 처리기가 자동으로 호출되어 사용자에게 작업을 지시합니까?안드로이드에서 처리기 및 스레드
1
A
답변
1
Handler
의 javadoc는 말한다 :
Each Handler instance is associated with a single thread and that thread's
message queue.
당신이 당신의 핸들러를 만든 경우 모든 활동이 만들어 그들의 방법은 기본 응용 프로그램 스레드 (또한 EDT라고도 함)에서 호출이가 있기 때문에, 당신은을 통해 (핸들러를 호출 할 때 post() 또는 유사한 메소드)를 백그라운드 스레드에서 삭제하면 EDT에서 실행됩니다. 당신이 핸들러 (= 주 응용 프로그램 스레드를) 만든 곳
what happens when my background thread finishes its operation will i have to
implement handlers in every single activity in the app or will the handler from
activity a will be automatically invoked and will direct the user to activity a?
- 백그라운드 스레드에서 당신의 실행 가능한
run()
방법보다 handler.post (실행 가능한)를 호출는 스레드에서 실행됩니다. - 아니요, 사용자를 활동 A로 연결하거나 표시하지 않습니다. 액티비티 A에서 정의한
runnable.run()
메소드를 실행합니다.
1
일반적으로 UI 스레드를 onPreExecute()
및 onPostExecute()
으로 작업 할 수 있기 때문에 일반적으로 스레드에 AsyncTask를 사용하려고합니다.
관련 활동이 활성화되어 있지 않으면 너무 많이해서는 안됩니다. 이상적으로는 스레드를 onPause()
에 멈추게 할 수 있습니다.
활동과는 다른 삶을 가져야하는 작업의 경우 Services을 권장합니다. 워드 프로세서에서 :
서비스는 와 사용자가 상호 작용하지 않으면 서 더 이상 실행 작업을 수행하거나 사용하는 다른 응용 프로그램 기능 를 제공하는 응용 프로그램의 욕망의 어느 쪽인지를 표현하는 응용 프로그램 구성 요소 입니다.
그런 다음 장기 실행 작업을 수행하는 동일한 서비스와 상호 작용하는 여러 활동을 가질 수 있습니다.
관련 문제
- 1. Android UI 스레드 및 메시지 처리기 혼동
- 2. 처리기 대 스레드
- 3. 안드로이드에서 서비스로 4 스레드
- 4. 안드로이드에서 스레드 안전 점진적 다운로드
- 5. WCF 웹 서비스 내에서 스레드 및 이벤트 처리기 사용
- 6. 처리기 및 백킹 공유
- 7. htaccess 및 PHP 처리기
- 8. 스레드 및 스레드 스타트
- 9. 레이아웃 변경 안드로이드에서 스레드 내에서 한계
- 10. 안드로이드에서 (핸들러를 사용하여) 실행시 서로 방해하는 스레드
- 11. 스레드 수면 및 스레드 합류
- 12. HTTP 모듈 및 HTTP 처리기
- 13. 클로저 및 BackgroundWorker 이벤트 처리기
- 14. 최소화 및 최대화를위한 이벤트 처리기
- 15. MPICH 및 OpenMPI의 오류 처리기
- 16. ASP.NET 비디오 및 오디오 처리기
- 17. ViewModels 및 CanExecute 처리기 처리
- 18. http 처리기 및 asp.net mvc
- 19. 구성 전 처리기 및 조건문
- 20. 디버깅 및 전 처리기 지시문
- 21. 처리기
- 22. NServiceBus 및 NHibernate - 메시지 처리기 및 트랜잭션
- 23. UI 스레드 및 작업 스레드 자습서 찾기
- 24. .Net : 논리 스레드 및 스레드 로컬 저장소?
- 25. 주 스레드 + 스레드 풀 및 CPU 사용량
- 26. 소켓 기반 프로그램의 이벤트 및 스레드
- 27. 데이터베이스 트랜잭션 및 스레드
- 28. 스윙 및 핸들링 스레드
- 29. 스레드 및 패턴 사용
- 30. 스레드 및 실행 가능
응답 해 주셔서 감사합니다. 나는 현재 async 작업을 사용하여 webservice에서 데이터를 다운로드하고 db에 삽입합니다. 배경 스레드를 사용하는 이유는 사용자가 새로운 또는 업데이트 된 정보를 다운로드하는 동안 db의 데이터로 내 앱을 사용할 수 있기를 원하기 때문입니다. – user648929
@ user648929 백그라운드에서 작업중인 서비스를 원하는 것처럼 들리므로 다운로드로 인해 발생하는 활동주기가 걱정되지 않아도됩니다. –