Android : AsyncTask 및 서비스
여기 대부분의 질문에 대한 답 약을 많이 읽어 않는 이유 AsyncTask
에 대한 및 로더 아무것도하지만 서비스 ? 서비스가 잘 알려지지 않았거나 더 이상 사용되지 않거나 나쁜 속성이나 무언가가 있습니까? 차이점은 무엇입니까?
(그런데, 나는 그것에 관한 다른 스레드가 있다는 것을 알고 있지만, 실제 문제에 대해 하나 또는 다른 것을 사용하는 것이 더 나은지 여부를 쉽게 결정할 수있는 명확한 차이점은 없습니다.)
어떤 경우에는 하나와 동일한 작업을 수행하는 것이 가능 AsyncTask
하거나 Service
그러나 일반적으로 하나가 더 이상 다른 작업에 적합하다.
AsyncTask
UI 스레드를 실행할 수없는 일회성 시간 소모적 인 작업을 위해 설계되었습니다. 일반적인 예는 버튼을 눌렀을 때 데이터를 가져 오거나 처리하는 것입니다.
Service
s는 백그라운드에서 지속적으로 실행되도록 설계되었습니다. 버튼을 눌렀을 때 데이터를 가져 오는 위의 예에서 서비스를 시작하고 데이터를 가져온 다음 중지 할 수는 있지만 비효율적입니다. AsyncTask
한 번 실행되고 데이터를 반환하고 완료 되는 것을 사용하는 것이 훨씬 빠릅니다 .
그래도 백그라운드에서 무언가를 계속 해야하는 경우 a Service
가 가장 좋습니다. 음악 재생, 지속적으로 새로운 데이터 확인 등이 여기에 해당합니다.
또한 Sherif가 이미 말했듯이 서비스가 반드시 UI 스레드에서 벗어날 필요는 없습니다.
대부분 Service
의 경우 응용 프로그램 Activity
이 열려 있지 않은 경우에도 코드를 실행하려고합니다 . AsyncTask
UI 스레드에서 코드를 실행하는 것이 매우 간단하도록 설계되었습니다.
서비스 는 완전히 다릅니다. 서비스는 스레드 가 아닙니다 !
활동은 서비스에 바인딩되며 서비스에는 호출 될 때 호출 스레드를 차단하는 일부 기능이 포함됩니다. 서비스는 온도를 섭씨에서 도로 변경하는 데 사용될 수 있습니다. 바인드 된 모든 활동이이 서비스를받을 수 있습니다.
그러나 AsyncTask
백그라운드에서 일부 작업을 수행하는 동시에 스레드는 결과를 호출 스레드에 다시보고하는 기능이 있습니다.
단지 생각 : 서비스 에는 AsyncTask
객체 가있을 수 있습니다 !
Service
UI 실행을 요구하지 않는 Android 프레임 워크의 구성 요소 중 하나입니다. 즉, 사용자가 앱을 적극적으로 사용하지 않는 경우에도 서비스를 통해 일부 작업을 수행 할 수 있습니다. 그렇다고해서 서비스가 별도의 스레드에서 실행되는 것은 아니지만 메인 스레드에서 실행되며 필요한 경우 별도의 스레드에서 작업을 수행 할 수 있습니다. 사용 사례는 백그라운드에서 음악을 재생하고 사용자 상호 작용없이 backgroud의 서버와 데이터를 동기화하는 것입니다.
AsyncTask
반면에 별도의 스레드에서 수행되는 UI 차단 작업에 사용됩니다. 스레드를 작성 및 유지 보수하고 결과를 기본 스레드로 다시 전송하는 모든 태스크가 AsyncTask에 의해 처리 될 때 새 스레드를 작성하고 태스크를 수행하는 것과 동일합니다. 사용 예는 서버에서 데이터를 페치하고, 컨텐츠 분석기에서 CRUD 조작을 수행합니다.
서비스는 데몬이고 AsynkTask는 백그라운드 스레드입니다.
서비스 와 asynctasks 는 거의 똑같은 일을하고 있습니다. 거의 .service 또는 asynctask 사용은 요구 사항에 따라 다릅니다.
예를 들어 일부 버튼을 누르거나 화면을 변경 한 후 서버에서 목록보기로 데이터를로드하려는 경우 asynctask.it을 사용하는 것이 좋습니다. 기본 ui 스레드와 병렬로 실행됩니다 (배경에서 실행). 기본 UI 스레드에서 앱을 종료 한 후 비동기 작업이 없습니다.
그러나 서비스는 서비스를 중지하면 서비스를 중지하지 않는 한 서비스를 시작한 후에 앱을 종료 한 후에 실행할 수 있습니다. 서비스 요구 사항에 따라 다릅니다. 데이터 수신을 계속 확인하거나 네트워크 상태를 확인하려면 지속적으로 서비스를받는 것이 좋습니다.
행복한 코딩.
경우에 따라 두 가지를 모두 사용하여 동일한 기능을 수행 할 수 있습니다. 비동기 작업과 달리 서비스는 자체 수명주기를 가지며 컨텍스트를 상속합니다 (서비스는 비동기 작업보다 강력합니다). 앱을 종료 한 경우에도 서비스를 실행할 수 있습니다. 앱을 닫은 후에도 무언가를하고 컨텍스트 변수가 필요하면 서비스를 받으십시오.
예 : 음악을 재생하려고하고 사용자가 앱을 떠날 때 일시 중지하지 않으려면 서비스를 받아야합니다.
참고 URL : https://stackoverflow.com/questions/6957775/android-asynctask-vs-service
'IT story' 카테고리의 다른 글
C #에서 현재 디렉토리 이름의 마지막 부분을 가져옵니다. (0) | 2020.06.24 |
---|---|
bash 스크립트 함수에 정의 된 변수와 함께 curl POST 사용 (0) | 2020.06.24 |
IntelliJ IDEA 13은 1.7로 설정했지만 Java 1.5를 사용합니다. (0) | 2020.06.24 |
JQuery 타이머를 사용하여 js 함수 호출 (0) | 2020.06.24 |
Sublime 3-기능 Goto 정의를위한 키 맵 설정 (0) | 2020.06.24 |