본문 바로가기

안드로이드8

LiveData와 MutableLiveData 차이점 ▷ LiveData : LiveData는 Data 변경을 관찰할 수 있는 Data Holder 클래스입니다. 일반적인 Observable과는 달리, 안드로이드 생명주기(LifeCycle)를 알고 있습니다. Activity, Fragment, Service와 같은 안드로이드 Component LifeCycle를 인식하고 그에 따라 LiveData는 활성상태(Active)일때만 데이터를 Update합니다. * 활성상태 : STARTED / RESUMED 를 의미 - LiveData 특징 ● Observer 패턴에 따라 데이터 변경이 일어날 때마다 Observer 객체에 알려줍니다. 매번 UI를 업데이트 하는 코드 작성할 필요없이 데이터 상태와 UI를 일치시켜줍니다. ● 메모리 누수가 없습니다. Observe.. 2021. 5. 19.
[JetPack] ViewModel 의 역할 ViewModel 클래스는 UI 관련 데이터를 저장하고 관리하기 위해 설계되었다. 안드로이드 프레임워크는 특정 사용자 동작 또는 사용자 제어에서 완전히 벗어난 장치 이벤트에 대한 응답으로 UI 컨트롤러를 파괴하거나 re-create 하도록 한다. 약 시스템이 UI 컨트롤러를 destory하거나 re-creates한다면 별도로 저장되지 않은 데이터를 잃게 된다. 여러분의 앱이 사용자의 리스트를 포함하고 있다고 생각해봅시다. 만약 액티비티가 상태 변경으로 재 생성이 된다면, 새 액티비티는 사용자 리스트를 re-fetch 해야한다. 간단한 데이터의 경우 onSaveInstanceState() 메소드를 써서 onCreate()에서 다시 데이터를 받을 수 있지만, 이 방식은 bitmap과 리스트 형식의 많은 양의.. 2021. 3. 15.
[Android] 회전모드 최적화 하는 방법 (상태유지) 앱 서비스마다 다르겠으나, 태블릿에서 자주 사용하는 이용자들의 경우에는 가로모드 최적화 서비스를 요청하는 경우가 있습니다. 이럴 때는, 앱 서비스를 이용하는 도중에 디바이스를 회전하더라도 현재보고 있는 상태에서 화면에 맞도록 최적화 시켜줄 필요가 있는데요. 고객의 요구사항을 어떻게 해결할지 방법을 알아보도록 합시다. 1. AndroidManifest.xml 에 들어가서, 태그를 확인합니다. 보통은 위처럼 name, theme 속성값만 존재합니다. 2021. 1. 22.
[Kotlin] 싱글턴 패턴 개발을 하다보면, 수많은 클래스의 객체를 생성하는 일들이 많다. 하지만, 대부분 알고보면 똑같이 사용하는 객체를 무분별하게 반복적으로 생성하는 경우를 볼 수 있다. 계속해서 객체를 생성하게 되면, 불필요한 메모리를 낭비하게 된다. 왜냐하면 신규 객체 생성 시, CPU에서 일정한 메모리를 할당하게 되기 때문이다. 하나의 객체를 생성하여 여기저기서 반복해서 사용할 수 있는 패턴이 바로 "싱글턴 패턴(Singleton Pattern)"이다. * Singleton : 클래스의 인스턴스는 오직 하나임을 보장하며, 이 인스턴스에 접근할 수 있는 방법을 제공한다. 아래 코드는 MySQL 연결을 싱글턴 패턴으로 구현한 예제이다. 1. MySQLOpenHelperSingleton (Singleton 패턴으로 생성) pa.. 2021. 1. 21.
Didn't find class "com.google.firebase.provider.FirebaseInitProvider" 오류 해결책 안드로이드 개발과정에서 targetSDKVersion을 상향 조정하는 것은 피할 수 없는 숙명이다. 10월 30일 기준으로 보았을 때, 안드로이드 개발자라면 모두 targetSDKVersion 29에 최적화하여 앱 개발을 진행 중일 것이다. 2020년 11월부터는 기존에 서비스 중인 앱도 업데이트 시에는 무조건 targetSDKVerison을 29로 업그레이드해야 한다. * 안드로이드 10 변경된 사항을 참고하면서 앱 서비스에 영향을 미치는 부분이 없는지 점검은 필수이다. 보안상의 이슈와 서비스 최적화를 위해 targetSDKVersion 29로 상향 후, 업데이트를 한 다음날 오류가 접수되었다. 문제는 바로 Didn't find class "com.google.firebase.provider.Fireb.. 2020. 10. 30.
드로이드 나이츠(DroidNight) 1일차 세션 후기 안드로이드 개발자라면 한 번쯤 들어봤을 만한 '드로이드 나이츠' 2020 세션이 드디어 시작됐다. 기존에는 4월에 진행될 예정이었으나, 코로나19로 인해 오프라인 방식으로 개최될 수가 없게 되었다. 그래서 9월에 온라인 세션의 형태로 미루어지게 되었다. 시작하는 날인만큼 실시간 Youtube 방송의 형태로 진행되었다. 코로나 19로 인해 비대면 서비스가 활성화 되면서, 다양한 기술 세션들이 온라인으로 진행되어 집에서 편하게 접할 수 있었다. 이러한 점에 있어서는 뜻밖의 장점이다. Summary 개발자로서 현재 주기적인 리팩토링의 중요성에 대해서 느끼고 있었다. 때마침 발표자 분들도 주기적인 리팩터링과 때에 따라서는 리스트럭쳐(ReStructure)도 병행할 필요가 있다고 강조해주셨다. (주기적인 리팩토링.. 2020. 9. 5.
[구글 콘솔] 내부 앱 공유 (정식 업데이트 전, 필수코스!) 앱 개발자라면 테스트의 중요성에 대해 공감할 것이다. 안드로이드 플랫폼은 다양한 기기가 존재하여 특정 기기에서만 발생하는 문제가 종종 확인되기도 한다. 그래서 정식 업데이트 전, 내부 직원들을 대상으로만 테스트를 진행하여 버그를 최소화하고 싶을 것이다. 이럴 때, [구글 콘솔 > 내부 앱 공유]을 활용하여 특정 사용자에게만 제한적으로 배포 가능하다. 1. 구글 콘솔 페이지 접근하여, 왼쪽 메뉴 [개발도구 > 내부 앱 공유] 클릭 2. 내부 앱 공유 페이지 내 '테스트 참여 대상 관리' 탭을 선택하여, 테스트 참여 대상을 추가한다. 3. 업로더 관리 탭으로 이동하여, 업로드 링크(http://play.google.com/apps/publish/internalappsharing) 클릭 4. 업로드 관리페이지.. 2020. 7. 3.
[카카오API] 마켓 앱버전에서 지도가 표시되지 않는 현상 해결! 개인 프로젝트에서 카카오 Map API를 이용하여 지도를 표시하는 기능이 있었다. 분명히 안드로이드 스튜디오 상에서 Debug모드와 Release모드에서는 지도가 정상적으로 표시되었는데 실제로 마켓 앱 서비스에서는 아래와 같이 지도 화면이 회색으로 정상 동작을 안 하는 것이다. 카카오 Develper 사이트에 접속해서 혹시나 API Key 값이 틀렸는지 확인해보았으나, 정확히 일치해서 원인을 찾고자 Q&A 사이트에서 열심히 나와 비슷한 문제를 겪고 있는 사람은 없는지 확인해보았다. 다행히도 비슷한 고민을 하는 사람이 있었다. 위 글은 결론은 keyHash 값이 카카오 API 상에 등록한 값과 일치하지 않아서 생겨나는 문제점이라는 것이다. 자 여기서 KeyHash 가 무엇이길래 이렇게 날 힘들게 하는것인가.. 2020. 6. 28.