안드로이드 [Kotlin] - 핸들러와 루퍼(Handler & Looper)
2022. 12. 25. 21:34
Android
안드로이드에서 Thread 안드로이드에서의 메인 스레드(Main Thread, UI Thread)란? 앱이 실행됐을 때 시스템에서는 메인(Main)이라고 불리는 스레드를 생성한다. 메인스레드는 안드로이드 이벤트 생성 및 처리를 담당할 뿐 아니라 안드로이드에서 발생되는 여러 이벤트를 그와 관련된 위젯으로 연동시키는 중요한 역할을 수행한다. 또한 안드로이드에서 제공하는 다양한 뷰와 위젯을 표현하는 역할과 사용자로 하여금 그것을 사용할 수 있게 해 주어 UI 스레드라고도 불린다. 앱에 메인 스레드만 존재한다면? 앱이 단일 스레드 즉 메인 스레드만 존재하는 모델에서는 형편없는 성능을 낳게 된다. 메인 스레드에서 모든 작업을 처리한다면 네트워크 처리 및 데이터베이스 쿼리와 같이 오래 걸리는 작업을 하는 동안 UI..
안드로이드 [Kotlin] - Data Class의 copy()는 얕은 복사다.
2022. 12. 10. 22:39
Android
Data Class란? 데이터 보관이 목적인 클래스로, toString(), equals(), hasCode(), copy()가 기본적으로 오버라이딩 및 추가되어 있어 데이터 출력, 비교, 복사가 편하다. 얕은 복사? 깊은 복사? 얕은 복사란 "주소 값"을 복사하다는 의미이다. 깊은 복사란 "실제 값"을 복사한다는 의미이다. 코틀린에서는 기본적으로 '='을 사용해서 다른 인스턴스를 넣어주면 얕은 복사가 수행된다. 얕은 복사가 수행되게 되면 같은 주소 값을 참조하기 때문에 복사된 객체가 변경되면 원본 객체의 값도 변경된다. data class Car(private val name: String = "", var position: Int = 0) { fun move() { position++ } } clas..
안드로이드 [Kotlin] - 안드로이드에서의 싱글톤패턴(Singleton Pattern) with object & DCL
2022. 12. 9. 14:16
Android
싱글톤 패턴이란? 소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다. 주로 공통된 객체를 여러 개 생성해서 사용하는 DBCP(DataBase Connection Pool)와 같은 상황에서 많이 사용된다. - 위키피디아 싱글톤 패턴의 이점 위의 설명과 같이 싱글톤 패턴을 사용하면 이점이 어떤 것이 있을까? 메모리 측면 가장 먼저 떠올릴 수 있는 이점은 아무래도 "메모리 측면" 일 것이다. 최초 한 번의 생성을 통해서 고정된 메모리 영역을 사용하기 때문에 추후 해당 객체에 접근할 ..
안드로이드 [Kotlin] - 안드로이드 테스트 자동화
2022. 11. 27. 21:13
Android
안드로이드에서 기능을 작성하면 필연적으로 기능의 테스트를 수행해야 한다. 이는 애뮬레이터나 단말기에서 앱을 실행하고 구현한 기능을 이것저것 동작해보며 내가 기대하는 동작과 일치하는지 확인하는 것이다. 테스트 유형 기능 테스트 : 앱이 제대로 기능을 수행하는지 확인 성능 테스트 : 앱이 빠르고 효율적으로 수행하는지 확인 접근성 테스트 : 접근성 서비스와 잘 연동되는지 확인 호환성 테스트 : 모든 기기와 API 수준에서 잘 작동하는지 확인 수동 테스트 테스트 자동화에 대해 알지 않아도 즉 초보라도 쉽게 수행할 수 있다. 하지만 앱의 기능이 많아지고 구조가 복잡해지면 점점 빌드시간이 증가하고, 코드를 수정할 때마다 앱의 모든 기능을 수동으로 일일이 확인하는 것은 비효율적이다. 자동 테스트 사람이 수동으로 일일..
안드로이드 [Kotlin] - 프로젝트에 의존성 주입(DI) 적용해보기 - Hilt
2022. 11. 10. 16:16
Android
의존성 주입, 안드로이드에서의 의존성 주입, 그리고 안드로이드 의존성 주입 라이브러리인 Hilt에 대해서 지난번 포스팅에서 다뤘다. https://jminie.tistory.com/180 안드로이드 [Kotlin] - 의존성 주입(DI) 알아보기 - Hilt 📌 들어가며 의존성 주입은 객체지향 프로그래밍의 개념 중 하나이다. 이것을 이해하기 위해서는 객체지향 설계의 5대 원칙으로 불리는 SOLID 원칙에 대해 알아보아야 한다. 바로 직전 포스팅에 jminie.tistory.com 오늘은 Hilt를 프로젝트에 적용해보자 📌 의존성주입 build.gradle(Project) plugins { ... ... id 'com.google.dagger.hilt.android' version '2.41' apply ..