안드로이드 어싱크태스크 예제

Sem imagem cadastrada

Google의 Power 블로그 게시물 시리즈에 설명된 배경 작업을 처리하기 위한 많은 고려 사항과 모범 사례가 있습니다. 되풀이 호출 중 하나는 WorkManager라는 안드로이드 제트 팩 라이브러리입니다, 이는 JobScheduler 프레임 워크 API의 기능을 확장하고 안드로이드를 지원합니다 4.0+ (API 14+). WorkManager 베타는 오늘 출시되었습니다! Q: Android 계정 관리자를 사용하여 비슷한 코드를 만들 수 있습니까? 비동기 태스크를 사용하려면 하위 클래스가 있어야 합니다. 하위 클래스는 하나 이상의 메서드(doInBackground(Params…)를 재정의하고 가장 자주 두 번째 메서드(onPostExecute(결과))를 재정의합니다. 예를 들어 AsyncTask를 헤드리스 프래그먼트의 필드로 정의하는 경우 구성 창 동안 계속 실행될 수 있습니다. AsyncTask 는 실행 메서드가 호출될 때 스레드를 시작합니다. 당신은 그와 상호 작용할 필요가 없습니다. 그런 다음 doInBackground에서 작성한 모든 것이 실행됩니다. 모르는 사이에 해당 처리기가 MESSAGE_POST_RESULT라는 메시지가 전송됩니다. 즉, onPostExecute 메서드로 이동하는 AsyncTask에 대한 신호입니다. 그것은 매우 편리 소리, 하지만이 기술을 사용 하는 동안 염두에 두어야 할 주의 는 시간이 지남에 따라 더 복잡 하지 않습니다 매우 간단한 작업에 대 한 의미.

다음 코드는 AsyncTask를 사용하여 인터넷에서 무언가를 다운로드하는 방법을 보여 줍니다. 코드는 안드로이드 매니페스트에서 android.permission.INTERNET 권한이 필요합니다. Android에서 작업 및 백 스택을 관리하는 방법은 위에서 설명한 대로 모든 활동을 동일한 작업에서 연속적으로 시작하고 “마지막 에, 처음 시작” 스택에 배치하여 대부분의 앱에 적합하며 활동이 어떻게 연결되는지 걱정할 필요가 없습니다. 작업 또는 백 스택에 존재하는 방법을 사용하십시오. 그러나 정상적인 동작을 중단하도록 결정할 수 있습니다. 앱의 활동이 현재 작업 내에 배치되는 대신 시작될 때 새 작업을 시작하도록 할 수 있습니다. 또는 작업을 시작할 때 기존 인스턴스를 앞으로 가져오려는 경우(백 스택 위에 새 인스턴스를 만드는 대신). 또는 사용자가 작업을 떠날 때 루트 활동을 제외한 모든 활동의 백 스택을 지워야 합니다. 복잡성에서 진화하는 작업이 있는 이 상황에서는 우리가 볼 수 있는 다른 것들이 있습니다.

Android SDK는 상당히 풍부한 옵션을 제공하므로 대부분의 경우 자신의 스레드를 시작하고 관리할 필요가 없습니다. 나는 스레드가 무엇인지, 그들이 무엇을하는지에 대해 이야기하는 효율적인 안드로이드 스레딩 책에서이 인용문을 정말로 즐겼다. 백그라운드 스레드가 무엇인지, 그리고 주 스레드에서 실행하는 것이 어떻게 대안인지 이해하는 데 도움이됩니다.