안드로이드/Kotlin 5

[안드로이드][Kotlin] Collections (List, Map, Set)

개발에 유용한 자료구조와 Collection 함수에 대해 알아보자. Collection에는 크게 List, Map, Set이 있다. 1. List (리스트) List는 데이터가 저장되거나 삭제될 때 순서를 지키는 컬렉션 타입으로, 배열(array)과 달리 크기가 정해져있지 않기 때문에 동적으로 값을 추가할 수 있다. index를 통해 순차적으로 진행되며, 중간 데이터가 삭제되더라도 나머지 데이터는 순서를 유지한다. 또한 포인터로 불연속적인 메모리에 접근하기 때문에 메모리 관리에 용이하다는 특징이 있다. - 읽기전용 리스트 : listOf() - 수정가능 리스트 : mutableListOf(), ArrayList() // 읽기 전용 리스트 var scores1 = listOf(값1, 값2, 값3) scor..

[안드로이드][Kotlin] Scope Functions (Apply, Also, Let, With, Run 함수)

코틀린 표준 라이브러리에서는 자기 자신의 객체를 전달하는 Scope Function 을 지원한다. Scope Funtion에는 크게 Apply, Also, Let, With, Run 함수가 존재한다. 아래 표를 통해 전체적인 그림에 대해 알아보자. 접근방식 this 접근방식 it 객체 자신을 반환 apply also 블록 수행 결과를 반환 run, with let 본 게시물에서는 5가지 Scope Function 의 정의를 포함한 Java VS Kotlin 코드를 비교하여 다뤄볼 예정이다. 1. Apply 함수 this 를 통해 자신의 객체를 전달하고 그 객체를 다시 반환하는 함수로, 주로 객체의 상태를 변화시키고 바로 저장하고 싶을 때 사용하는 함수이다. //Kotlin Code val person =..

[안드로이드][Kotlin] Null Safety 와 지연초기화

Kotlin은 Java와 달리 Null 처리에 높은 안정성을 가진다는 특징이 있다. null 예외가 발생하면 앱이 다운되고, 이는 프로그램의 가용성을 저하시키는 치명적인 오류라고 할 수 있다. 코틀린에서는 자료형에 null 여부를 명시함으로서 안정성을 높일 수 있다. null 처리 안정성을 높이기 위해 "?", "!!", "?.", "?:" 와 같은 키워드를 사용한다. 1. "?" 키워드 Java에서는 NPE(Null Pointer Exception)를 런타임에서만(=실행을 해야만) 잡을 수 있는 반면, Kotlin에서는 이를 컴파일 시점에서도 잡기위해 "?" 키워드를 사용한다. ? 키워드를 사용하면 해당 변수가 Nullable 타입으로 사용된다. fun nullCheck() { var name: Str..

[안드로이드][Kotlin] 액티비티 간의 데이터 전달 (+registerForActivityResult() 사용)

안드로이드 개발을 하다보면, Activity 간의 데이터를 전달하는 상황이 발생한다. 먼저 단방향으로 데이터를 전달하는 방법에 대해 알아보자. 다른 Activity로 데이터를 전달하기 위해서는 다른 앱 구성요소로 작업을 요청하는 일종의 메시지 객체인 intent 객체에 데이터를 담아 전달할 수 있다. 다른 Activity 로 데이터를 전달할 때는 일반적으로 명시적 인텐트를 사용한다. (참고) 명시적 인텐트 VS 암시적 인텐트 더보기 - 명시적 인텐트(Explicit Intent) 시작할 구성요소 이름을 Intent 객체에 설정하여 넘기는 방식으로, 일반적으로 현재 앱 안의 구성요소를 시작시킬 때 사용한다. startActivity(Intent(this, SubActivity::class.java)) - ..

[안드로이드][Kotlin] Firebase SDK 추가

Firebase Project 생성 후, Firebase에 App을 등록하는 과정 중 "Add Firebase SDK"를 하는 부분이 있다. Firebase 문서 업데이트가 안되어있는 관계로, Arcticfox(변경 전)에서는 무리없이 따라갈 수 있지만 Bumblebee(변경 후) 에서는 gradle 파일이 다름을 확인할 수 있을 것이다. 해결방법은 아래와 같다. 첫번째, Google services Gradle plugin 추가 (/build.gradle) 해당 이미지에 있는 코드를 project의 build.gradle에 아래 둘중의 한가지 방법으로 추가해주면 된다. //Top-level build file where you can add configuration options common to al..