IT story

Android : AsyncTask 및 서비스

hot-time 2020. 6. 24. 07:28
반응형

Android : AsyncTask 및 서비스


여기 대부분의 질문에 대한 답 약을 많이 읽어 않는 이유 AsyncTask에 대한 및 로더 아무것도하지만 서비스 ? 서비스가 잘 알려지지 않았거나 더 이상 사용되지 않거나 나쁜 속성이나 무언가가 있습니까? 차이점은 무엇입니까?

(그런데, 나는 그것에 관한 다른 스레드가 있다는 것을 알고 있지만, 실제 문제에 대해 하나 또는 다른 것을 사용하는 것이 더 나은지 여부를 쉽게 결정할 수있는 명확한 차이점은 없습니다.)


어떤 경우에는 하나와 동일한 작업을 수행하는 것이 가능 AsyncTask하거나 Service그러나 일반적으로 하나가 더 이상 다른 작업에 적합하다.

AsyncTaskUI 스레드를 실행할 수없는 일회성 시간 소모적 인 작업을 위해 설계되었습니다. 일반적인 예는 버튼을 눌렀을 때 데이터를 가져 오거나 처리하는 것입니다.

Services는 백그라운드에서 지속적으로 실행되도록 설계되었습니다. 버튼을 눌렀을 때 데이터를 가져 오는 위의 예에서 서비스를 시작하고 데이터를 가져온 다음 중지 할 수는 있지만 비효율적입니다. AsyncTask한 번 실행되고 데이터를 반환하고 완료 되는 것을 사용하는 것이 훨씬 빠릅니다 .

그래도 백그라운드에서 무언가를 계속 해야하는 경우 a Service가 가장 좋습니다. 음악 재생, 지속적으로 새로운 데이터 확인 등이 여기에 해당합니다.

또한 Sherif가 이미 말했듯이 서비스가 반드시 UI 스레드에서 벗어날 필요는 없습니다.

대부분 Service의 경우 응용 프로그램 Activity이 열려 있지 않은 경우에도 코드를 실행하려고합니다 . AsyncTaskUI 스레드에서 코드를 실행하는 것이 매우 간단하도록 설계되었습니다.


서비스 는 완전히 다릅니다. 서비스는 스레드 가 아닙니다 !

활동은 서비스에 바인딩되며 서비스에는 호출 될 때 호출 스레드를 차단하는 일부 기능이 포함됩니다. 서비스는 온도를 섭씨에서 도로 변경하는 데 사용될 수 있습니다. 바인드 된 모든 활동이이 서비스를받을 수 있습니다.


그러나 AsyncTask백그라운드에서 일부 작업을 수행하는 동시에 스레드는 결과를 호출 스레드에 다시보고하는 기능이 있습니다.

단지 생각 : 서비스 에는 AsyncTask객체 가있을 수 있습니다 !


ServiceUI 실행을 요구하지 않는 Android 프레임 워크의 구성 요소 중 하나입니다. 즉, 사용자가 앱을 적극적으로 사용하지 않는 경우에도 서비스를 통해 일부 작업을 수행 할 수 있습니다. 그렇다고해서 서비스가 별도의 스레드에서 실행되는 것은 아니지만 메인 스레드에서 실행되며 필요한 경우 별도의 스레드에서 작업을 수행 할 수 있습니다. 사용 사례는 백그라운드에서 음악을 재생하고 사용자 상호 작용없이 backgroud의 서버와 데이터를 동기화하는 것입니다.

AsyncTask반면에 별도의 스레드에서 수행되는 UI 차단 작업에 사용됩니다. 스레드를 작성 및 유지 보수하고 결과를 기본 스레드로 다시 전송하는 모든 태스크가 AsyncTask에 의해 처리 될 때 새 스레드를 작성하고 태스크를 수행하는 것과 동일합니다. 사용 예는 서버에서 데이터를 페치하고, 컨텐츠 분석기에서 CRUD 조작을 수행합니다.


서비스는 데몬이고 AsynkTask는 백그라운드 스레드입니다.


서비스asynctasks 는 거의 똑같은 일을하고 있습니다. 거의 .service 또는 asynctask 사용은 요구 사항에 따라 다릅니다.

예를 들어 일부 버튼을 누르거나 화면을 변경 한 후 서버에서 목록보기로 데이터를로드하려는 경우 asynctask.it을 사용하는 것이 좋습니다. 기본 ui 스레드와 병렬로 실행됩니다 (배경에서 실행). 기본 UI 스레드에서 앱을 종료 한 후 비동기 작업이 없습니다.

그러나 서비스는 서비스를 중지하면 서비스를 중지하지 않는 한 서비스를 시작한 후에 앱을 종료 한 후에 실행할 수 있습니다. 서비스 요구 사항에 따라 다릅니다. 데이터 수신을 계속 확인하거나 네트워크 상태를 확인하려면 지속적으로 서비스를받는 것이 좋습니다.

행복한 코딩.


경우에 따라 두 가지를 모두 사용하여 동일한 기능을 수행 할 수 있습니다. 비동기 작업과 달리 서비스는 자체 수명주기를 가지며 컨텍스트를 상속합니다 (서비스는 비동기 작업보다 강력합니다). 앱을 종료 한 경우에도 서비스를 실행할 수 있습니다. 앱을 닫은 후에도 무언가를하고 컨텍스트 변수가 필요하면 서비스를 받으십시오.

예 : 음악을 재생하려고하고 사용자가 앱을 떠날 때 일시 중지하지 않으려면 서비스를 받아야합니다.

참고 URL : https://stackoverflow.com/questions/6957775/android-asynctask-vs-service

반응형