kotlin asynctask 예제

간단히 말해서 비동기 작업을 사용하여 백그라운드 작업을 만드는 전체 프로세스가 매우 간단하다고 말할 수 있습니다. doinBackground 메서드는 모든 백그라운드 처리를 담당합니다. 나머지 다른 세 가지 방법은 백그라운드 처리 스레드를 주 스레드와 동기화하는 방법을 지원하는 것입니다. 이것은 최종 예제 (이 GitHub 리포지토리에서도 사용할 수 있음)이며 초기 저장소와 유사하지만 더 나은 방법으로 스레드를 관리합니다. 우리는 URL 연결과 예제를 볼 수 있기 때문에. AndroidManifest.xml 파일을 열고 다음 줄을 추가하기만 하면 됩니다. Kotlin 프로그래밍 언어는 언어 수준에서 코루틴에 대한 지원을 제공하며 다음 기사 시리즈는 kotlin에서 코루틴의 개념을 설명하는 데 중점을 두게 됩니다. 동일한 이미지 다운로드 예제의 경우 doInBackground() 코드가 이미지를 반환하는 경우 비트맵을 사용할 수 있습니다. 이제 AsyncTask를 확장하여 MyAsyncTask 클래스를 만들 차례입니다.

이 예제에서는 MyAsyncTask 클래스를 Main의 내부 클래스로 만듭니다. 따라서 main 클래스에 정의된 모든 변수를 사용할 수 있습니다. 따라서 아래에 제공된 MyAsyncTask 클래스를 만들거나 수정합니다. 이러한 세 가지 형식은 각각 doInBackground(), onProgressUpdate() 및 onPostExecute() 메서드에 대한 인수 형식에 해당합니다. 메서드가 인수를 기대하지 않으면 위의 코드에서 onProgressUpdate()의 경우와 마찬가지로 Void가 사용됩니다. 메서드에 대 한 인수 형식을 변경 하려면 클래스 선언 및 메서드 시그니처에서 형식 선언을 변경 합니다. 이 예제에서는 onProgressUpdate() 메서드가 정수전달되므로 다음과 같이 클래스 선언을 수정합니다. 우리의 예를 변경하자, 우리는 쉽게 사용할 수 있습니다Context 배경 스레드에서 공유 환경 설정 코드를 실행하려면 : 그냥 안드로이드 스튜디오를 사용하여 간단한 프로젝트를 만들고 주요 언어로 Kotlin을 선택합니다. MainActivity.kt 클래스 및 프로젝트에 필요한 다른 구성 요소를 만듭니다. 이 게시물에 설명 된 모든 이론은 여전히 유효하지만viewModelScope는 확실히 ViewModel에서 코루틴을 사용하는 방법입니다. 따라서 이 새 범위를 사용하여 주 스레드에서 너무 많은 코드를 실행하지 않도록 이전 예제를 다시 작성할 수 있습니까? 이 솔루션은 쉽게, 여분의 Context (IO) 블록은 기본 스레드에 백그라운드 스레드에서 앞뒤로 이동하지 않고 여러 일시 중단 방법을 실행하는 데 사용할 수 있습니다 :이 게시물에서, 당신은 간단한 안드로이드 비동기 작업 예제와 AsyncTask에 대해 배울 것입니다.

마침내, 당신은 너무 그것을 다운로드 할 수 있습니다. 예를 들어 Url을 사용하여 이미지 파일을 다운로드하는 AsyncTask를 사용한 다음 URL을 매개 변수로 지정합니다. 코루틴을 사용하면 비동기 코드를 순차적으로 작성하는 동시에 장기 실행 작업이 백그라운드에서 실행되고 UI 스레드에서 차단되지 않도록 올바르게 전달됩니다. 위의 예의 동루틴 구현은 다음과 같습니다 : 코루틴에 대한 많은 자료를 사용할 수 있습니다, 공식 가이드는 읽을 수 있지만 웹에 많은 흥미로운 게시물이 있습니다. 예를 들어, 이 두 가지를 읽으면서 코루틴에 대해 새로운 것을 배웠습니다 (그리고 내 코드에 대한 몇 가지 추가 의심이 발생했습니다): 아키텍처 구성 요소의 릴리스 2.1.0-alpha01 (수명 주기-뷰모델-ktx 라이브러리)에는 사용할 새 확장 속성이 포함되어 있습니다. 뷰모델에서 코루틴을 참조하십시오. 소스 코드를 보면 이 범위가 이 게시물의 이전 예제와 유사하게 ViewModel 수명 주기에 연결된 작업을 사용하지만 IO 대신 기본 디스패처를 사용하는 것을 확인할 수 있습니다. 그래서이 게시물은 여전히 유용? Kotlin 코루틴은 익숙한 방식으로 비동기 코드를 작성할 수 있도록 허용하며, 동기식 코드와 비교하면 코드 구조가 변경되지 않습니다.

Comments

comments