냐냐한 Dev Study/Android

[학습] Android Basics in Kotlin 과정 소개

소소하냐 2023. 1. 4. 17:23
안드로이드 공식 문서, Android Basics in Kotlin 과정을 학습하며 기록하고 및 요약하기 위한 글입니다. 

Android 개발자 기초(자바) Codelab으로 번역 학습을 하다보니 버전이 오래되어 학습이 힘듭니다.  
그래서 그냥 안드로이드가 권장하는 Kotlin 언어로 다시 처음부터 학습하기로 했습니다. 

 

* 전체 과정 링크: https://developer.android.com/courses/android-basics-kotlin/course

* 학습 시작일: 2023.01.04 ~ 

* 저의 안드로이드 스튜디오 버전: Android Studio Dolphin | 2021.3.1 Patch 1 


 

소개: 이 과정에서는, Kotlin 프로그래밍 언어로 안드로이드 앱을 만드는 기본 사항을 배웁니다. 

 

그리고, 이 학습은 거의 한글 번역이 되어있는 것으로 보입니다. 학습과정에서 한글 번역이 아닌 것이 있으면 옆에 참고사항으로 적어두겠습니다. 

 

아래는 해당 학습 목록을 정리하였으며,

각 학습이 완료되면 해당 학습에 대한 저의 요약 링크를 추가할 예정입니다. 

* 참고로, 로그인 상태에서 학습하면 각 학습 완료 배지를 줍니다. 뭔가 완성한 즐거움이 생겨 좋습니다. 

* 2023.01.11 : 학습하며 그때 그때 요약 글로 정리하는 것이 비효율적인 것 같아, Unit2 부터는 요약글을 따로 남기지 않고 하단에 간단하게 해당 학습에서 배우는 내용 정도로 정리하기로 했습니다. 

지금까지 모은 배지입니다.

 

이 페이지는 작성자의 학습에 따라 계속 수정됩니다. 

 

Unit 1: Kotlin 기초

코틀린 소개

- https://developer.android.com/courses/pathways/android-basics-kotlin-one

 

Welcome to Android Basics in Kotlin (동영상)

  • 해당 과정을 아주 명랑하게 소개하는 영상(한글 자막 있음, 3:39) 

 

Kotlin에서 첫 번째 안드로이드 앱 빌드 (동영상)

  • Unit 1에서 배울 내용을 간략하게 소개하는 영상(한글 자막 있음, 1:59)

 

Kotlin으로 첫 번째 프로그램 작성 

Kotlin으로 생일 축하 메세지 작성

 

첫 번째 앱 만들기

- https://developer.android.com/courses/pathways/android-basics-kotlin-two

 

Android 스튜디오 소개 (동영상)

  • 안드로이드 스튜디오 소개 영상(한글 자막 있음, 1:22)

 

Android 스튜디오 다운로드 및 설치

 

첫 번째 Android 앱 만들기 및 실행

 

휴대기기에서 앱 실행

 

Android 테스트의 기본사항 알아보기

 

위 내용들은 안드로이드 설치 및 실행, 에뮬레이터 및 실제 장치에서 실행하기 위한 설정, 프로젝트를 탐색하는 방법에 대한 내용입니다.  Android 테스트의 기본사항의 경우도 단위 테스트 / 계측 테스트 코드가 들어가는 위치 정도의 설명입니다.

그런 이유로 요약 글은 없습니다. 원문을 확인하십시오

 

기본 레이아웃 구축 

- https://developer.android.com/courses/pathways/android-basics-kotlin-three

 

생일 카드 앱 디자인 (동영상)

  • 생일 카드 앱 디자인 소개 영상(한글 자막 있음, 2:44)

 

생일 카드 앱 생성

안드로이드 앱에 이미지 추가 

 

생일카드 앱

 

App에 버튼 생성 

- https://developer.android.com/courses/pathways/android-basics-kotlin-four

 

Kotlin의 Classe, object instance 

대화형 "주사위 굴리기 앱" 만들기

Kotlin에 조건부 동작 추가 

"주사위 굴리기 앱"에 이미지 추가

  • 위 4가지 내용 요약한 글 : [학습] 주사위 굴리기 Android 앱 만들기 (Kotlin) 
  • Class를 정의하고, 해당 Class의 객체를 생성하고 사용 
  • 조건문(when) 사용
  • IntRange 데이터 타입과, random() 함수 사용
  • 이미지 리소스 추가 및 이미지 업데이트
  • 버튼에 클릭 이벤트 추가

주사위 굴리기 앱

 

단위 테스트 작성

원문으로 보는 것을 추천합니다. 그런 이유로 따로 작성한 요약글은 없습니다. 

간단 요약 

  • 자동 테스트: 코드를 통해 소프트웨어로 실행하는 테스트
  • 수동 테스트: 기기에서 개발자/사용자가 직접 기능을 테스트 
  • 단위 테스트 코드 위치: app > java > 패키지명 (test) (예: com.example.diceroller (test))
  • 테스트 코드 작성 및 테스트 실행 방법

 

디버깅 소개

원문으로 보는 것을 추천합니다. 그런 이유로 따로 작성한 요약글은 없습니다. 

간단 요약

  • Log class 사용
  • 로그 수준 별 로깅 함수 : Log.v(), Log.d(), Log.i(), Log.w(), Log.e(), Log.wtf()
  • Logcat 창에서 로그 확인
    (원문에서 소개하는 Logcat 창은 현재 Dolpin 2021.3.1 Patch 1 버전과는 차이가 있습니다)
  • Dolpin 2021.3.1 Patch 1 버전의 Logcat 검색(filter)은 key-value 로 검색 
    • 로컬 앱 프로젝트의 PIDpackage:mine
    • 특정 값
      • package:<package-ID>
      • tag:<tag>
      • level:[VERBOSE | INFO | ASSERT |DEBUG | WARN | ERROR ]
    • 키 앞에 -를 추가하여 특정 값을 제외
      • -tag:<exclude-tag>
    • 키 뒤에 ~를 배치하여 주어진 키로 정규 표현식을 사용합니다
      • tag~:<regular-expression-tag>
      • exclude 태그와 결합: -tag~:<exclude-regular-expression-tag>

 

이러한 기본 사항으로 만들 수 있는 것? (동영상)

  • 지금 까지 배운 내용과 그것으로 무엇을 할 수 있는지 소개하는 영상(한글 자막 있음, 0:56)

 

Project: Lemonade app 

  • 해당 내용에 대한 요약글  : [학습] 레모네이드 앱 프로젝트 (Android,Kotlin)  
  • 지금까지 배운 내용으로 "다운받은 소스"에 필요한 코드를 추가하여 앱이 동작하도록 합니다. 
  • 테스트 코드가 "다운받은 소스"에 포함되어있습니다. 추가한 코드가 테스트를 통과하는지 확인합니다.

 

레모네이드 앱

 

Unit 2: Layouts

앱에서 사용자 입력 받기: Part 1

- https://developer.android.com/courses/pathways/android-basics-kotlin-unit-2-pathway-1

 

단원 2: 레이아웃 소개 (동영상)

  • Unit 2에서 배울 2개의 앱과 배울 내용에 대한 간략한 소개 영상(한글 자막 있음, 1:11)

 

팁 계산기 앱 소개 (동영상)

  • 팁 계산기 앱(사용자 입력을 받는 앱)에 대한 간략한 소개 영상(한글 자막 있음, 1:28)

 

Kotlin의 클래스 및 상속

  • 원문 보기:  
  • 클래스 계층 구조 및 상속에 대한 설명이 있습니다. 
  • abstract 키워드를 사용하여 추상 클래스를 생성합니다.
  • 추상 클래스에 abstract변수 및 함수를 선언하고, 상속받은 class에서 override 하도록 합니다.
  • 추상 클래스와 상속에 대한 예제가 순차적이고 구체적이라 이해에 도움이 됩니다. 
  • with(인스턴스) { } 구문 설명이 있습니다. 
  • open 키워드에 대한 설명이 있습니다
    : 다른 클래스에 상속해서 사용할 수 있도록 하려면 open 키워드 사용이 필요합니다. 

 

2023.01.11 
튜토리얼을 따라하며, 요약을 하다보니, 진도는 진도대로 나가기 힘들고 
요약이다 보니, 결국 원문을 보는게 나은 듯 합니다. 방향성의 의문이 생깁니다.

우선은 요약은 여기서 멈추고 튜토리얼은 계속 진행하면서 어떻게 학습한 내용을 남길 수 있을 지 고민해 볼 생각입니다. (각 학습에서 무엇을 배우는지 정도는 작성할 예정입니다.)

 

Android의 XML 레이아웃 만들기 

  • 원문 보기
  • Code 뷰에서 XML 코드를 수정하는 방법을 사용합니다.
  • XML에 대한 설명과 activity_main.xml 파일에 있는 태그, 요소, 속성들에 대한 설명이 있습니다. 
  • ConstraintLayout, EditText, TextView, RadioGroup & RadioButton, Switch, Button 요소들을 사용합니다. 
  • 아래와 같은 레이아웃을 생성합니다.

팁 계산 앱

팁 계산

  • 원문 보기  
  • "Android의 XML 레이아웃 만들기"에서 만든 XML 레이아웃이 동작하도록, 팁을 계산하는 코드를 작성하는 과정입니다. 
  • findViewById() 대신 뷰 바인딩(view binding)을 사용합니다. 
    : 뷰 바인 사용 설정 방법이 있습니다. (build.gradle) 
  • 빈 값을 입력해보고, 비정상 종료된 부분을 디버그하여 수정합니다. (null 처리) 
  • 코딩 권장 사항을 적용하는 방법 및 코드 검사 방법을 안내합니다. 

 

앱에서 사용자 입력 받기: Part 2

- https://developer.android.com/courses/pathways/android-basics-kotlin-unit-2-pathway-2

 

앱 테마 변경 

  • 원문 보기
  • 안드로이드 앱의 색상 테마 변경 방법을 소개합니다. 
  • Material Design에 대한 간략한 소개가 있습니다. 
  • 앱 테마를 선택하는 방법을 소개합니다. 
    : 머티리얼 색상 도구 사용법 소개 
  • 테마 색상에 대해 자세히 알아봅니다. 

# 이름 테마 속성
1 기본 colorPrimary
2 기본 변형 colorPrimaryVariant
3 보조 colorSecondary
4 보조 변형 colorSecondaryVariant
5 배경 colorBackground
6 표면 colorSurface
7 오류 colorError
8 기본(대비) colorOnPrimary
9 보조(대비) colorOnSecondary
10 배경(대비) colorOnBackground
11 표면(대비) colorOnSurface
12 오류(대비) colorOnError

 

"대비"는 다양한 배경색에 !대비!되는 텍스트 및 아이콘에 사용됩니다. 

 

따로 머티리얼 테마를 설정하기 전에 이미 사용하고 있었습니다. 
Empty Activity 템플릿으로 프로젝트를 생성하고 app > res > values > themes.xml 파일을 열어보면 
아래와 같이 Material Components 라이브러리에 미리 정의된 DayNight 테마를 사용합니다. 
<style name="Theme.TipTime" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> ... </style>

 

앱 아이콘 변경

  • 원문 보기
  • 앱 런처 아이콘 소개와 변경하는 방법이 있습니다.
  • 화면 밀도(dpi)가 다양한 여러 기기에 아이콘을 제공하려면 어떻게 구성되어야 하는지 설명합니다. 

 

더 나은 사용자 경험 만들기 

  • 원문 보기 
  • "앱에서 사용자 입력 받기: Part 1"에서 만든 팁 계산 앱 디자인을 개선합니다. 
  • 머티리얼 디자인, 컴포넌트에 대한 간략한 소개가 있습니다. 
  • 머티리얼 컴퓨넌트를 적용해 봅니다. 
    EditText → TextInputLayout & TextInputEditText, Switch → SwitchMaterial 
  • 아이콘 추가 방법을 설명합니다. 
  • 스타일 및 테마를 사용합니다. 
  • 스크롤 뷰를 추가하고, 엔터 키 입력시 키보드를 숨기는 코드를 추가합니다. 

 

개선된 팁 계산 앱

 

Instrumentation Test(계측 테스트) 작성

  • 원문보기  
  • Instrumentation Test(계측 테스트) 작성 방법을 소개합니다.
    : 실제 기기 및 에뮬레이터에서 실행되는 테스트
  • Espresso 기본사항

 

스크롤 목록 표시

- https://developer.android.com/courses/pathways/android-basics-kotlin-unit-2-pathway-3 

Affirmations 앱 소개 (동영상)

  • 명언 앱을 만들 것이라고 소개하는 영상입니다.(한글 자막 있음, 1:49)

 

Kotlin에서 목록 사용 

  • 원문 보기
  • List, MutableList 사용 방법을 알아봅니다. 
  • vararg 가변 인수를 전달하고, 빌더 패턴을 사용해봅니다. 
  • while, for 반복문을 사용해봅니다. 

 

RecyclerView를 사용하여 스크롤 가능한 목록 표시 

  • 원문 보기
  • RecyclerView를 사용하여 데이터 목록을 표시하는 방법을 배웁니다. 
  • Adapter 패턴을 사용합니다. 
  • 패키지에 대한 설명 및 패키지를 기능별로 그룹화합니다. 
    : model, data, adapter 

 

카드를 사용하여 이미지 목록 표시

  • 원문 보기 
  • 위에서 생성한 Affirmations 앱 목록에 이미지를 추가합니다. 
  • MaterialCardView를 사용하여 디자인을 개선합니다. 
  • 앱 테마 색상을 변경하고, 앱 아이콘을 변경합니다. 

 

Affirmations 앱

 

프로젝트: Dogglers 앱

  • 원문 보기
  • 제공되는 소스에, 직접 코드를 추가하여 앱을 만듭니다. 
  • TODO에서 하라는대로 앱을 만들고 테스트를 했는데, 테스트 실패합니다. 
    : vertical_scroll_content_at_first_position, grid_list_content_at_first_position, horizontal_scroll_content_at_first_position 모두 첫번째 위치를 검사하는 부분입니다. 
  • 아래 소스 내용과 같이 TODO 요건에 맞지 않는 테스트 코드라 실패합니다. 테스트 코드를 수정 후 테스트하면 통과합니다. (2023.01.13일에 받은 소스 기준입니다. 이후 정상 동작 코드로 변경될 수도 있습니다.) 
// 제공되는 테스트 코드입니다. 
// 이 테스트 코드로는 실패합니다. 
/*
fun checkFirstPosition() {
    hasListItemContent("Tzeitel", "7", "sunbathing",
        R.drawable.tzeitel)
}*/

// TODO 요건에 Age: , Hobbies: 를 포함하게 되어있기 때문에
// 테스트 코드를 위 TODO 요건에 맞게 변경해야 테스트 통과됩니다. 
fun checkFirstPosition() {
    hasListItemContent("Tzeitel", "Age: 7", "Hobbies: sunbathing",
        R.drawable.tzeitel)
}

 

dogglers 앱

 

Unit 3: Navigation

화면 이동 

- https://developer.android.com/courses/pathways/android-basics-kotlin-unit-3-pathway-1

Welcome to Unit 3: Navigation (동영상)

  • 탐색할 수 있는 여러 화면이 있는 앱 개발을 하고, 앱 아키텍쳐 및 핵심적임 개념을 배울 것이라고 소개하는 영상입니다.(한글 자막 있음, 1:53)

 

Kotlin의 Collection

  • 원문 보기
  • Collection(set, map)을 학습합니다. 
  • lambda와 higher-order function에 대해 학습합니다. 
    - lambda(람다 표현식,람다) : 이름이 없으며 곧바로 표현식으로 사용할 수 있는 함수
    - higher-order function(고차 함수) : 함수를 다른 함수로 전달하거나 다른 함수에서 함수를 반환하는 것을 의미

 

Activity, Intent 

  • 원문 보기
  • 2개의 화면(Activity)이 있고, 화면간 이동이 가능한 Words 앱을 만듭니다. 
    : A~Z 까지 알파벳이 제공되고, 해당 알파벳 선택하면 단어 목록 화면으로 이동합니다(명시적 Intent). 단어를 선택하면 브라우저에서 단어를 검색합니다(암시적 Intent).
  • 기본 제공 소스에 학습 코드를 추가합니다. 
  • 명시적(explicit) Intent와 암시적(implicit) Intent를 학습합니다. 
  • App bar에 메뉴를 추가합니다. 
  • companion object 를 사용하여, 여러 클래스에서 사용할 수 있는 상수를 정의합니다. 

Words 앱 : 알파벳을 선택 -> 단어 목록, 단어 선택 -> 브라우저에서 검색

 

Activity lifecycle(수명 주기) 단계

  • 원문 보기
  • activity의 lifecycle 및 각 단계에 대해 알아봅니다. 
  • 각 단계의 lifecycle 콜백 메서드를 Log를 표시하도록 override하고, 각 단계가 호출되는 시기를 파악합니다: onStart(), onResume(), onPause(), onStop(), onDestroy(), onRestart()
  • 설정이 변경될 때(예:가로/세로 모드 변경) 데이터 손실이 일어나지 않도록 onSaveInstanceState()를 이용합니다.

원문 이미지

 

Navigation component 소개 

- https://developer.android.com/courses/pathways/android-basics-kotlin-unit-3-pathway-2

 

Android Jetpack: Navigation Component 소개 (동영상)

  • Navigation Component에 대한 소개 영상 (한글 자막 있음, 5:08)

 

Fragment, Navigation Component

  • 원문 보기
  • Fragment를 사용하여 단일 Activity로 화면 이동을 할 수 있도록 구성합니다. 
  • "Activity, Intent" 과정에서 만든 Words 앱을 Fragment를 사용하도록 변경합니다. 
  • Fragment와 Fragment lifecycle에  대해 학습합니다.
  • Navigation Graph를 사용합니다. 
  • 개인적 의견으로, 해당 실습만으로는 사용법을 익히기 힘듭니다. 추가 학습이 필요합니다. 

 

Navigation Component 테스트

  • 원문 보기
  • Navigation Component 테스트 방법을 학습합니다. 

 

Navigation: 개요 - MAD(Modern Android Development) Skills (동영상)

  • Navigation component로 최신 Android 개발 기술을 학습합니다.(한글 자막 있음, 10:42) 

 

Architecture components

- https://developer.android.com/courses/pathways/android-basics-kotlin-unit-3-pathway-3

 

Unscramble 앱 소개 (동영상)

  • Architecture component를 사용하여 Unscramble 앱을 만들거라고 소개하는 영상입니다.(한글 자막 있음, 1:57) 
  • Unscramble 앱: 글자 재배열 앱 (예: aicuhrt -> haircut )

 

ViewModel에 데이터 저장 

  • 원문 보기
  • Android Architecture Component 중 하나인 ViewModel을 학습합니다. 
  • UI 컨트롤러(Activity, Fragment)에서는 뷰 화면을 제어하고, ViewModel에서는 데이터 처리를 담당하도록 분리하여 설계합니다.
  • Unscramble 앱(단어 맞추기 앱)을 만들어 봅니다. (아직은 미완성이고 다음 과정으로 이어집니다)

 

Unscramble 앱

 

ViewModel과 함께 LiveData 사용

  • 원문 보기
  • 이전 강의에서 만든 Unscramble 앱(단어 맞추기 앱)에 LiveData를 적용합니다.
  • LiveData의 변경을 감지하는 observer method를 사용합니다. 
  • data binding을 사용해, layout 파일에서 직접 데이터를 참조하여 화면을 업데이트 합니다. 

 

향상된 navigation app 예제

- https://developer.android.com/courses/pathways/android-basics-kotlin-unit-3-pathway-4

 

Cupcake app 소개 (동영상)

  • Unit 3 과정에서 지금까지 배운 내용들을 간략히 소개하고, 앞으로 만들 Cupcake App에 대해 소개하는 영상입니다. (한글 자막 있음, 2:04)

 

ViewModel 공유

  • 지금까지 배운 내용들로 Cupcake App을 만듭니다. 
  • Fragment간에 ViewModel을 공유하기 위해 activityViewModels() 을 사용합니다. 
  • data binding, listener binding을 사용합니다. 
  • 날짜 형식과 통화 형식을 지정합니다.

 

원문 이미지, Cupcake App

 

Navigation, backstack

  • 위에서 만든 Cupcake App에 [Cancel] 버튼 및 Up(←) 버튼 기능을 추가합니다. 
  • task와 back stack을 학습합니다. 
  • 수량 문자열 plurals을 사용합니다. (1 cupcake, 6 cupcakes)
  • 암시적 Intent를 사용하여 이메일로 주문 내용을 전달하도록 구현협니다. 

 

ViewModel 및 LiveData 테스트

  • ViewModel 및 LiveData의 단위 테스트를 작성합니다.

 

Adaptive(적응형) layouts

- https://developer.android.com/courses/pathways/android-basics-kotlin-unit-3-pathway-5

 

두 개의 창 레이아웃 만들기 (자료)

  • 자료 링크 
  • 대형 기기와 폴더블에서 창 두 개를 나란히 표시하고, 휴대전화와 같은 소형 기기에서는 창을 한 번에 한 개만 표시하도록 하는 SlidingPaneLayout 사용해 대한 설명이 있습니다. 

 

Adaptive layouts

  • 원본 보기
  • SlidingPaneLayout을 사용하여 대형 기기에서는 두 개의 창, 소형 기기에서는 하나의 창으로 표시되도록 합니다.
  • 소형 기기에서의 뒤로 가기 버튼 Callback을 구현합니다. (OnBackPressedCallback)

 

Sports App

 

반응형 레이아웃으로 UI 이전(Migrate) (자료)

  • 자료 링크 
  • 다양한 크기의 화면에 맞게, 반응형으로 UI를 만들도록 설명한 가이드 문서입니다. 

 

프로젝트: Lunch Tray 앱

  • 원문 보기
  • 제공되는 소스에, Unit 3에서 배운 내용을 바탕으로 직접 코드를 추가하여 앱을 만듭니다.

 

Unit 4: 인터넷에 연결

Coroutines

- https://developer.android.com/courses/pathways/android-basics-kotlin-unit-4-pathway-1

 

Welcome to Unit 4: Connect to the internet (동영상)

  • 인터넷 데이터를 사용한 Mars Photos App과 사용할 라이브러리, 동시성(Concurrency)과 Coroutine에 대한 소개 영상입니다. (2023.01.20 현재 한글 자막 없음, 3:51)

 

coroutines 소개 

  • 원문 보기
  • 스레드 (기본(UI) 스레드, 백그라운드 스레드) 및 동시 실행(concurrency)에 대한 간단한 설명을 합니다. 
  • 직접 스레드를 사용할 때의 문제점과 이를 해결하기 위한 Coroutine(Kotlin 기능)에 대해 알아봅니다.

 

인터넷에서 데이터 가져오기

- https://developer.android.com/courses/pathways/android-basics-kotlin-unit-4-pathway-2

 

HTTP/REST 소개 (동영상)

  • Client/Server 간 요청과 응답을 처리하는 HTTP 프로토콜과 REST에 대한 소개 영상입니다. (2023.01.20 현재 한글 자막 없음, 10:27)

 

인터넷에서 데이터 가져오기

  • 원문 보기
  • Retrofit 라이브러리를 사용하여 웹 서비스에 연결 및 응답을 받습니다. 
  • Moshi 라이브러리를 사용하여 JSON 응답을 데이터 객체로 변환합니다. 
  • 객체 선언(Object Declaration)을 사용해 싱글톤 객체로 사용합니다. (object 키워드 사용)
  • ViewModelScope(View 대상 coroutine 범위)을 사용하여 백그라운드 스레드에서 웹 서비스를 호출합니다. 
  • INTERNET 권한 추가 및 서버 연결 오류시 예외 처리를 추가합니다. 

 

인터넷에서 이미지 로드 및 표시

  • 원문 보기
  • Coil 라이브러리를 사용하여 웹 URL에서 이미지를 로드하고 표시합니다. 
  • RecyclerView와 Grid Adapter를 사용하여 그리드로 표시합니다. 
  • 이미지를 다운로드하고 표시할 때 발생할 수 있는 오류를 처리합니다. 
  • Binding Adapter를 사용합니다. (@BindingAdapter) 

 

Mars Photos App

breakpoint 사용하여 디버그

  • 원문 보기
  • breakpoint 사용(+조건 추가)하여 디버깅합니다. 
  • watches 추가하여 특정 변수 모니터링합니다.

프로젝트: Amphibians 앱

  • 원문 보기
  • 제공되는 소스에, Unit 4에서 배운 내용을 바탕으로 직접 코드를 추가하여 앱을 만듭니다.

Unit 5: Data persistence

SQL, Room, Flow 소개

- https://developer.android.com/courses/pathways/android-basics-kotlin-unit-5-pathway-1

 

SQL 기본사항

  • 원문 보기 
  • 관계형 데이터베이스의 기본사항과 SQL을 학습합니다.

Room 및 Flow 소개 

  • 원문 보기 
  • Room 라이브러리 사용
  • Kotlin Flow 를 사용하여 데이터 변경 시 업데이트 되도록 합니다.

 

Bus Schedule App

Use Room for data persistence

- https://developer.android.com/courses/pathways/android-basics-kotlin-unit-5-pathway-2

 

Room Kotlin API 사용 (동영상)

  • Room Kotlin API 사용 및 테스트 방법에대한 소개 영상입니다. (2023.01.26 현재 한글 자막 없음, 7:17)

 

Room으로 데이터 유지(persist)하기

  • 원문 보기
  • Room 라이브러리를 사용하여 SQLite 데이터베이스를 만들고 ViewModel로 상호작용하는 방법을 배웁니다.
  • Room의 세 가지 주요 구성요소 (Data entities, DAOs, Database class)를 구현합니다. 
  • 데이터베이스에 데이터를 insert합니다. 

 

Room을 사용하여 데이터 읽기 및 업데이트하기

  • 원문 보기
  • 데이터베이스의 데이터 목록/세부 정보를 읽고 표시하고, 데이터를 update/delete 합니다. 

 

Inventory App

 

Repository Pattern

  • 2023.01.27 현재 진행중

Preferences DataStore

 

프로젝트: Forage 앱

 

Unit 6: WorkManager

WorkManager 작업 예약

- https://developer.android.com/courses/pathways/android-basics-kotlin-unit-6-pathway-1

- WorkManager 기본사항 소개 (동영상)

- WorkManager 구현 소개 (동영상)

- WorkManager를 사용한 백그라운드 작업 

- 프로젝트: Water Me! 앱

 

 

끝까지 읽어 주셔서 감사합니다. ^^