[안드로이드] 코틀린 AsyncTask 연습 - 이미지 다운로드

비동기 처리 AsyncTask 연습 인터넷 url의 이미지를 다운로드 받아보자 2022.01.27 - [Android] - [안드로이드] Kotlin 비동기 처리 AsyncTask URL을 입력하여 다운로드 버튼을 누르면 이미지를 다운로드하는 앱 만들기 AsyncTask 생성 다운로드 버튼 클릭 이벤트를 작성 하고 내부에 AsyncTask를 생성합니다. 각인자의 타입은 아래처럼 작성합니다. onProgressUpdate() 메서드는 여기서 사용하지 않을 예정이므로 입력받는 인자의 타입을 void로 지정합니다. binding.btnDownload.setOnClickListener { // btnDownload 위젯 클릭시 val asyncTask = object: AsyncTask() { // AsyncT..

[안드로이드] Kotlin 비동기 처리 AsyncTask

2022.01.28 - [Android] - [안드로이드] 코틀린 AsyncTask 연습 - 이미지 다운로드 AsyncTask란? Task 처리 모델에는 동기식(Synchronous) 처리 모델과 비동기식(Asynchronous) 처리모델이 있습니다. 동기식 처리모델은 수차적으로 작업을 처리하는 모델로써 어떤 작업이 처리중이면 다음작업은 대기하지만, 비동기식 처리 모델은 병렬적으로 작업을 처리하며 어떤 작업이 처리 중이라도 대기하지않고 즉시 다음작업을 처리합니다. 처리 결과는 작업이 종료된 시점에서 받습니다. AsyncTask 구조 AsyncTask는 비동기 처리를 할 수 있도록 스레드와 핸들러 기능을 하나의 클래스에 합쳐놓은 것입니다. 3개의 인터페이스를 구현하는 것만으로 핸들러와 서브스레드를 대체할 ..

[안드로이드] 코틀린 스레드(Thread)연습 - 타이머 만들기

스레드 연습을 위한 Timer 앱을 만들어 보자 2022.01.26 - [Android] - [안드로이드] 코틀린 메인스레드 / 백그라운드스레드 2022.01.26 - [Android] - [안드로이드] 코틀린 Thread 클래스 / Runnable 인터페이스 사용 2022.01.26 - [Android] - [안드로이드] 코틀린 핸들러와 루퍼 앱 설명: 시작을 누르면 1초씩 증가하고 종료를 누르면 먼추게 된다. 변수의 선언 시간을 저장할 변수와 시작을 알려주는 변수를 선언합니다. var total = 0 // 전체 시간을 저장 var started = false // 시작 되었는지 체크를 위한 변수 핸들러 생성 스레드로 처리된 값을 메시지에 담아 textView 위젯으로 전달하는 핸들러를 생성 tota..

[안드로이드] 코틀린 핸들러와 루퍼

2022.01.26 - [Android] - [안드로이드] 코틀린 메인스레드 / 백그라운드스레드 2022.01.26 - [Android] - [안드로이드] 코틀린 Thread 클래스 / Runnable 인터페이스 사용 2022.01.27 - [Android] - [안드로이드] 코틀린 스레드(Thread)연습 - 타이머 만들기 메인 스레드와 백그라운드 스레드 메인 스레드로 집중될 코드를 백그라운드 스레드로 분산하게 되면 효율적인 앱을 만들 수 있습니다. 다만 주의할 점은 안드로이드에서는 '백그라운드 스레드는 UI 구성요소에 접근 할 수 없다'는 중요한 규칙이 있습니다. UI구성요소는 메인 스레드만 접근하여 업데이트 할 수 있으며 해당 제약사항은 윈도우나 다른 앱에서도 공통적으로 적용됩니다. 따라서 해당 제..

[안드로이드] 코틀린 Thread 클래스 / Runnable 인터페이스 사용

2022.01.26 - [Android] - [안드로이드] 코틀린 메인스레드 / 백그라운드스레드 2022.01.26 - [Android] - [안드로이드] 코틀린 핸들러와 루퍼 2022.01.27 - [Android] - [안드로이드] 코틀린 스레드(Thread)연습 - 타이머 만들기 Thread(스레드) 안드로이드 코틀린에서 스레드를 생성 하는 방법은 아래와 같습니다. Thread 클래스 Thread 클래스를 상속받는 WorkThread 라는 클래스를 정의 합니다. 이어서 스레드가 처리할 로직을 정의하는 run() 메서드를 오버라이드 합니다. run() 메서드 안에 i라는 변수에 값이 1부터 10까지 될 때 까지 반복하는 코드를 만듭니다. run() 메서드의 실행이 끝나면 스레드는 종료됩니다. clas..

[안드로이드] 코틀린 메인스레드 / 백그라운드스레드

2022.01.26 - [Android] - [안드로이드] 코틀린 Thread 클래스 / Runnable 인터페이스 사용 2022.01.26 - [Android] - [안드로이드] 코틀린 핸들러와 루퍼 2022.01.27 - [Android] - [안드로이드] 코틀린 스레드(Thread)연습 - 타이머 만들기 안드로이드의 스레드 안드로잉드의 스레드는 크게 1개만 존재하는 메인 스레드와 여러 개가 존재할 수 있는 백그라운드 스레드로 나눌 수 있습니다. 메인 스레드(UI 스레드) 안드로이드 시스텐은 새로운 앱이 시작하면 새로운 리눅스 프로세스를 시작합니다. 기본적으로 메인 액티비티를 비롯한 모든 컴포넌트는 단일 프로세스 및 메인 스레드에서 실행됩니다. 안드로이드의 메인 스레드는 다음과 같은 특징과 제약사항이..

[안드로이드] 코틀린 URI 란

URI(Uniform Resource Identifier) URI는 통합 지원 식별자 라고도 하며, 특정 리소스 자원을 고유하게 식별할 수 있는 식별자를 의미한다. URI의 하위 개념으로 웹서버의 특정 리소스의 위치를 나타내는 URL(Uniform Resource Locator)과 위치와 관계없이 유일한 URN(Uniform Resource Name)이 있다. 안드로이드 URI의 구조 안드로이드의 URI는 아래처럼 한줄의 텍스트 형태로 구성 되어 있다. content://com.example.resolver/patch/ccc/id00322321 순서대로 프로토콜-프로토콜ID(Authority)-데이터 경로-데이터ID 로 이루어 진다. 프로토콜: 가장 앞의 content://는 가져올 리소스를 주고 받는 ..

[안드로이드]코틀린 ORM 라이브러리 - ROOM

ORM(Object-Relational Mapping) ORM 객체(Class)와 관계형 데이터베이스의 데이터(Table)를 매핑하고 변환하는 기술. 데이터베이스에 사용되는 쿼리를 몰라도 코드만으로 데이터베이스를 컨트롤 할 수 있게 해준다 안드로이드는 SQLite에 접근을 할 수 있게 해주는 ORM라이브러리로 ROOM을 제공한다. Room 사용 준비 build.gradle(Module:app) 에서 room 사용 설정을 해주어야 정상적으로 사용이 가능하다. 차례로 아래의 두 과정을 진행 해준다. 1. Plugins 소스코드의 상단에 plugins 항목에 id 'kotlin-kapt'를 추가한다. plugins { id 'com.android.application' id 'kotlin-android' id..

[안드로이드]코틀린 SharedPreFerences를 사용해 데이터 저장하기

SharedPreferences는 인텐트에 값을 전달하듯이 데이터를 키, 값 형태로 저장이 가능합니다. 데이터는 xml 형식으로 된 파일로 저장되며 앱이 종료되도 남아 있습니다. SharedPreferences 사용하기 Sharedpreferences를 사용하기 위해서는 값을 저장 할때와 값을 읽어올 때 아래와 같은 과정이 필요합니다. 값을 저장할 경우 1. SharedPreferences 생성 2. Editor 꺼내기 3. putInt(), putString() 메서드로 저장하기 4. apply()로 파일에 반영 값을 읽어올 경우 1. SharedPreferences 생성 2. getInt(), getString() 메서드로 값 읽어 오기 -값을 읽어올때는 apply()가 필요하지 않다. getShar..

[안드로이드] 코틀린 텍스트 파일 내용 읽기 / 쓰기

텍스트 파일 읽기 - FileReader() 텍스트 파일을 읽을 때는 Reader 계열 스트림을 사용합니다. 아래의 예시는 파일의 경로를 파라미터로 전달받아 파일의 정보를 읽은 후에 스트림을 사용해서 파일의 실제 데이터를 읽는 메서드 입니다. 텍스트 파일 쓰기 - FileWriter() 쓰기의 경우 읽기와 동일 하지만 파일의 형태에 따라 사용하는 API가 달라집니다. 소스 파일은 읽기보다 쓰기가 조금 더 단순한 로직으로 구성 됩니다. 아래의 예시는 3개의 파라미터로 정보를 입력받아 텍스트파일을 쓰는 메서드입니다.