Android

    [Android, Kotlin] 앱 내에서 위치 권한 받기 (Location Permission)

    //Manifest 각각 GPS, Network를 통해 위치를 받아올 수 있게 하는 Permission이다. manifest 최상단에 추가하여 권한에 접근 할 수 있도록 한다. private lateinit var locationManager: LocationManager private lateinit var locationListener: LocationListener private val locationPermissionLauncher = registerForActivityResult (ActivityResultContracts.RequestMultiplePermissions()) { permissions -> val responsePermissions = permissions.entries.filt..

    [Android, Kotlin] Back Stack을 활용한 Fragment 뒤로가기 버튼 동작, Fragment 전환 애니메이션

    간단한 기분 테스트 앱을 만들며 Fragment를 다룰 일이 많았다. MainActivity 하나만을 두고 Fragment를 통한 화면 구성을 하는 Single Activity 형식으로 구현하면서 더더욱 Fragment를 많이 건드리게 되었다. ​ Fragment를 다루며 막혔던 부분에 대한 포스팅을 남긴다. ​ 1. Fragment 전환 시 (show 또는 replace) 뒤로가기 버튼을 누르면 이전 Fragment가 아닌 앱이 꺼져버린다. 2. Fragment 전환 시 애니메이션을 넣고싶다. 1. Solution Back Stack 활용 Fragment는 기본적으로 하나의 Activity에 종속되어 재사용되는 화면의 조각(Fragment)으로, Fragment를 stack 형식으로 쌓고 back bu..

    [Android, Kotlin] Architecture Pattern - MVVM

    MVVM 아키텍처 패턴에 대해 알아본다. ​ 이전 글에서 MVP 패턴의 경우 View와 Model이 분리된다는 장점이 있으나, 이에 따라 View와 Presenter 간 의존도가 높아지고, View 하나에 필연적으로 Presenter 하나가 따라오는 1:1 구조를 이루고 있어 앱의 사이즈가 커질 수록 코드의 양이 방대해진다고 하였다. MVP 패턴 : https://hungseong.tistory.com/11 Architecture Pattern - MVP 넘 어려운 아키텍처 패턴 MVC는 초기 앱 만들 때 맨날 쓰던 패턴이라 익숙하다. 하지만 MVP와 MVVM 이 녀석들은 아무리 검색하고 공부해도 헷갈려서 이해가 안 간다. 대체 뭐가 뭔지 1도 모르겠다. hungseong.tistory.com 그렇다면 ..

    [Android, Kotlin] Architecture Pattern - MVP

    넘 어려운 아키텍처 패턴 MVC는 초기 앱 만들 때 맨날 쓰던 패턴이라 익숙하다. 하지만 MVP와 MVVM 이 녀석들은 아무리 검색하고 공부해도 헷갈려서 이해가 안 간다. 대체 뭐가 뭔지 1도 모르겠다. 그래서 정리해본다. MVP Model - View - Presenter MVP 패턴은 Model, View, Presenter로 구성되어 있는 패턴이다. 도식화 하여 보는 것이 그나마 이해하기 가장 쉬우므로 보자. 코틀린에서 MVC는 Activity가 V+C를 모두 담당하고, Model과도 연결되어 Activity 혼자 모든 데이터 처리까지 담당하는 구조였다. MVC의 경우, 의존성이 제거된 부분 없이 서로가 서로에게 의존성이 존재하여 유지보수가 힘들며, 테스트 코드를 작성 할 때도 UI 위주의 테스트 ..

    [Android, Kotlin] DI(Dependency Injection), 의존성 주입

    Dependency 의존성 함수에 필요한 클래스, 객체 등에 의존하는 것. 한 객체가 다른 객체를 참조(다른 객체와 상호작용)하는 것 위 같은 코드에서 DefaultRestaurantFoodRepository 클래스는 FoodApiService에 종속되어 있다라고 한다. ​ 의존성이 높아지게 되면, 두 객체 간 결합도(coupling)가 높아지게 된다. 한 객체의 코드가 변경되면 다른 객체의 코드도 변경되어야 하므로, 유지보수 및 리팩토링의 불편함이 존재한다. DI (Dependency Injection) 의존성 주입 Dependency Injection(의존성 주입) - 의존성이 필요한 클래스, 객체 등을 내부적으로 생성하여 사용하는 것이 아닌, 외부에서 생성해 주입해 주는 것. * 객체의 생성 , 생..

    [Android, Kotlin] Retrofit, Room과 같은 동작에서의 Coroutine 쓰레드 처리

    코루틴을 사용한 비동기 처리를 구현한다. ​ 이 때, 비동기를 사용하는 주된 이유 중 하나는 네트워킹, 데이터베이스의 Read/Write와 같은 무거운 작업의 처리를 위함인데, 네트워킹 동작의 대표적인 라이브러리인 Retrofit, 데이터베이스 동작의 대표적인 라이브러리인 Room을 코루틴 내에서 사용할 때, 당연하게 IO Dispatcher로의 Thread Switching 을 해야 한다고 인식하고 있었다. ​ 그러나 Retrofit, Room을 통한 네트워킹 , db 동작을 수행 할 때, IO 스레드로 전환 할 필요 없이 main 스레드에서 수행하면 된다. ​ 아래 글이 이해가 잘 가도록 정리가 잘 되어 있어 단박에 이해할 수 있었다. ​ 참고 : https://www.lukaslechner.com/..

    안드로이드 개발자가 되기 위한 Android developer roadmap

    https://github.com/MindorksOpenSource/android-developer-roadmap GitHub - MindorksOpenSource/android-developer-roadmap: Android Developer Roadmap - A complete roadmap to learn Android App Devel Android Developer Roadmap - A complete roadmap to learn Android App Development - GitHub - MindorksOpenSource/android-developer-roadmap: Android Developer Roadmap - A complete roadmap to learn Andr... gith..