[Android] Room Database
·
Android
🎉Room 이란 ? 제가 안드로이드를 맨 처음 공부했을 땐 Local Database로 SQLite를 사용했습니다. 하지만 SQLite만으론 공식문서에서 다음과 같은 문제점을 제시했습니다. 즉, Database에 접근하기 위한 Query를 Database Schema가 변경됨에 따라 사용자가 Query를 수동으로 업데이트 해야 되는데, 이 과정은 시간도 오래 걸리고 오류가 발생할 가능성이 높습니다 Room은 이를 개선해 만든 AAC(Android Architecture Components)로 다음과 같은 역할을 수행합니다. 1. ORM(Object Relational Mapping) Library Room은 데이터베이스의 테이블과 앱의 객체 사이의 매핑을 자동으로 처리해주는 ORM 라이브러리로 DB Da..
[Android] Jetpack WorkManager
·
Android
📕 WorkManager란? Android Jetpack Library의 WorkManager는 Background Task를 위해 만들어졌습니다. 안드로이드 M(API 23) 부터 Background Task 제약 사항들이 점차 추가되며 개발자들은 Service, JobSchduler, JobDispatcher등을 사용해 개발했지만 API의 문제들로 인해 WorkManager가 등장하게 되었습니다. 이 글에선 기존 API의 문제점과 Workmanager에 대해 알아보겠습니다. 🤔 Background 상태의 앱이 왜 자동으로 종료될까요 ? 안드로이드 커널은 리눅스 커널은 기반으로 개발 되었지만 가장 큰 차이점은 Swap Space가 존재하지 않습니다. 📌Swap Space 주기억장치(RAM)의 용량이 부..
[Android]Android Memory Process
·
Android
[안드로이드 공식 문서] 프로세스 간 메모리 할당 | App quality | Android Developers 프로세스 간 메모리 할당 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 플랫폼은 사용 가능한 메모리가 있다는 것은 메모리 낭비라는 전제 하에 실 developer.android.com 📕 개요 공식 문서의 내용을 바탕으로 안드로이드 시스템에서 메모리 부족 상황에서 시스템이 어떻게 반응하고, 어떻게 메모리를 효율적으로 관리하는지에 대한 기본 개념을 알아보겠습니다. 안드로이드 플랫폼은 사용 가능한 메모리가 있다는 것은 자원을 낭비한다는 전제 하에 실행되기 때문에 항상 사용 가능한 모든 메모리를 사용하려 합니다. 우리가 앱을 닫은 후에도 다시 전환할 수..
Android Daum 우편번호 서비스 API With FireBase Hosting
·
Android
🎉 개요 프로젝트에서 Kakao MAP API를 사용하기 이전에 지도를 통해 위치 정보를 정확하게 보여주려면 위도와 경도가 필요합니다. 그러기 위해선 오타 등의 이유로 사용자에게 주소를 직접 입력 받는 것 보단 우편번호 API를 사용하는 방식이 더 안전할 것 이라고 생각해 사용하게 되었습니다. 🚨 Warning ! Node.js는 설치 되었단 가정하에 진행합니다 Window 환경에서 진행되었습니다. 이 API는 JS만으로 제공되기 때문에 안드로이드에서 Retrofit 등을 사용해 직접 연동이 불가능합니다. 이를 해결하기 위해 FireBase Host 서비스를 사용해 호스팅한 후 Web View를 통해 보여줄겁니다. FireBase Hosting이란 ? 정적 파일(HTML, CSS, JavaScript 등..
Android Base64 Decoding
·
Android
🎉 개요 안드로이드에서 서버측에 이미지를 받는 과정에서 Base64로 인코딩하여 전달 받습니다. 이 과정에서 이미지 처리가 정확히 어떻게 이루지는 것인지 한번 알아보겠습니다. 🎉 이미지 전송 갤러리에서 가져온 이미지의 Uri를 절대 경로로 반환합니다. 상대 경로를 사용하는 이유는 상대 경로보다 절대 경로를 사용하는 것이 더 정확하다고 하네요! // 절대경로 변환 fun absolutelyPath(path: Uri, context : Context): String { val proj: Array = arrayOf(MediaStore.Images.Media.DATA) val c: Cursor? = context.contentResolver.query(path!!, proj, null, null, null) ..
Anroid Jetpack [ ViewBinding ]
·
Android
[ 안드로이드 공식 문서 ] 뷰 결합 | Android 개발자 | Android Developers 뷰 결합 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정 developer.android.com 3년전 안드로이드를 처음 공부할 때 만 해도 findViewByID를 사용했던 기억이 납니다. 지금은 이를 대체하기 위한 아주 좋은 도구가 하나 생겼는데 그것이 바로 viewBinding 기법입니다. 📌 ViewBinding 이란 ? xml과 연결되는 바인딩 클래스가 자동으로 생성되어 이 클래스의 멤버로 해당 클래스가 가진 view들을 간편하게 참조할 수 있습니다. 바인딩 클래스는 정해..
Android LayoutInflater
·
Android
제가 안드로이드를 처음 시작했을 때는 용어를 이해하는게 제일 힘들었습니다. Context, Activity, Intent, Coroutine 등등... 처음엔 저도 뭐가 뭔지도 모르고 그냥 막 했던 기억이 나네요... 곧 있을 면접을 준비하면서 안드로이드의 기본적인 요소를 하나 하나 다 뜯어보고 있습니다. 그러면서 느낀게 제가 처음엔 이해 못했던 용어들이 이제는 다 이해가 되는겁니다. 그 동안 나 열심히 했구나 ㅠㅠ 내가 한게 틀린게 아니었어 잘했어😭 😭 😭 😭 심지어 면접 보는 회사 본사가 판교에 위치했습니다. 판교라니... 판교라니... 제 평생의 꿈이 판교에 있는 회사에서 일하는 건데 지금 제 실력으론 면접을 보는거 자체가 너무 영광인지라 가슴이 두근 거립니다 🤗🤗 합격하면 평생 꿈을 이루는거라 너..
Android Fragment Life Cycle
·
Android
[안드로이드 공식 문서] 프래그먼트 | Android 개발자 | Android Developers A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section developer.android.com 🎉 Fragment 프래그먼트는 액티비티 처럼 화면을 구성하는 뷰입니다. 액티비티에 작성할 수 있는 모든 코드를 프래그..