오늘 배워 볼 것 오늘은 SavedStateHandle에 대해서 간단히 다루어 보겟당. SavedStateHandle 넌 뭐냥? 우리는 흔히 ViewModel을 사용하는 이유가 ViewModel은 UI Data를 안전하게 보관하는 방법 중 하나로 ViewModel의 생명 주기가 Activity의 생명 주기 보다 길기 때문에 화면이 회전을 해도 데이터가 보존된다. 또한 onSavedInstaceState()를 사용하지 않기 때문에 데이터를 쉽게 저장/복원 가능하면 메모리에 저장이 가능하다. 하지만 이런 ViewModel도 메모리에 저장되기 때문에 Acdroid Frameworkd에서 메모리를 회수하게 되면 저장된 값을 잃게된다. 이런 문제점을 해결하기 위해서 ViewModel에서는 SavedstateHan..

금일 알아 볼 것 Jetpack Navigation 의 데이터 전송 방식 중 하나인 safe args를 알아보려고 한다. Jetpack Navigation safe args 일단 해당 safe args를 사용하기 위해서는 build.gradle 파일과 classpath가 필요하다. [build.gradle] buildscript { repositories { google() } dependencies { def nav_version = "2.7.7" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }아래 부부은 둘 중 하나만 추가한다. 자바 모듈 또는 자바와 Kotlin 혼합 모듈에 적합한 자바 언어 코드를..

금일 알아 볼 것 오늘은 Constraintlayout의 chain 부분을 다루어 볼려고 한다. 기본적으로 Constrainlayout의 상대적인 배치에 대해서는 다른 블로그에 많이 있으니깐 다루지 않겠다. 자 오늘도 드가즈아아아~~ Chain 이 뭔데? Constrainlayout의 연결 방식에 대해서는 누구나 기본적으로 알고 있을 것이다. 이 부분 중 Chain이라는 말도 들어본적 있을 것이다. Chain은 사용 가능한 공간 내 뷰들간의 분활되는 방식을 제어는 제약조건을 말한다. 쉽게 말하자면 2개의 View 사이에 서로의 제약조건을 걸어 서로 연결되면 Chain이 생기게 된다. 이해를 돕기위한 이미지는 아래에 있다. 위 사진 처럼 1과 2이 사이에는 체인이 생성된 것이다.(위는 신경쓰지 말것 위치를..

오늘 알아 볼 것 저번에 ViewBinding에 대해서 글을 포스트 했었는데 그 포스트 내용 중 NullPointException에 대한 이야기가 있었다. 그런 오늘 진짜 딱 맞는 사례가 생겨서 글을 추가로 포스트하게 되었다. 생각났을 때 바로바로!! 문제의 코드 [Activity 코드] class SignInActivity : AppCompatActivity() { val etId = findViewById(R.id.et_id) val etPw = findViewById(R.id.et_pw) val btnLogin = findViewById(R.id.btn_login) val btnSignin = findViewById(R.id.btn_signin) override fun onCreate(savedIn..
오늘 알아 볼 것 금일 알아 볼 것은 현재 프로젝트에서 진행하려고 하는 안드로이드 아키텍처 이다. 단간히 알아보자 Single Activity Architecture 아키텍처는 여러가지가 존재한다. 아마 제일 유명한 아키텍처를 말한다면 클린 아키텍처라고 할 수 있을 것이다. 이처럼 아키텍처를 알고 적용해서 코드를 작성하냐 안하냐는 내부 코드의 구조를 볼 때 많은 차이가 난다. 일단 우리 오늘 알아볼 Single Activity Architecture는 제목에서도 알 수 있듯이 Activity를 단일 혹은 아주 적은게 사용하고 나머지는 모두 fragment를 사용해서 구현하는 구조를 말한다. 줄여서 SAA라고 말한다. Google I/O에서는 하나 혹은 적은 갯수의 Activity만을 사용하고 나머지 화면..
오늘 할 일! 금일 알아 볼 것은 ViewBinding 이닷!! 사실 금일 이 해당 포스를 쓰게 된 이유가 있다. ViewBinding을 사용하는 방법에 대해서는 다른 블로그나 카페 등에 자세히 나와있다. 그런데 갑자기 왜 어떻게 layout에 있는 xml를 가져오는 궁금해졌다. 물론 알아야되는 부분이지만 글쓴이는 급급하게 안드로이드를 공부했고 독학을 하다보니 쓰는 방법 위주로 공부했었다. 그러다보니 어느 정도 개념은 알지만 정확히 어떤 부분이 이렇게 된다고 말할 정도는 아니다.ㅠㅠ 이부분에 대해서는 많이 반성한다.(그래서 열심히 노력중!) 혹시 쓰는 방법을 알고 싶다면 다른 글을 찾아보기 바란다 좋은 블로그 등이 많다. 이번 포스트는 내가 자신이 알고 싶은 내용을 포스트하려고 한다. 자 시작해보자 Vi..

오늘 할 것 오늘은 알고리즘 문제 중 나누어 떨어지는 숫자 배열에 대해서 말하보려고 한다. 문제 Int형 배열안에 숫자 중에 divisor변수 나누었을 때 떨어지는 숫자를 구하면된다. 아래가 문제이다. 우리 위에 문제를 보고 몇가지를 생각해야된다.!!! 각각의 배열의 int값에 어떻게 접근할 것 인가? 일단 나누어 떨어지는 값을 어떻게 구해서 걸려줄것인가? 마지막으로 어떻게 정렬을 할 것인가? 일단 배열의 int값에 접근하는 가장 기초적인 방법은 우리가 잘아는 for문 등의 반복문을 돌려서 각각의 int값에 접근하는 것이다. 하지만 나는 조금 다른 함수를 사용할 것이다. 바로 filter 라는 함수를 이용할 것이다. 해당 함수를 이용하면 위에 생각해봐야 될 것 중 2가지가 해결된다. 바로 접근 방법과 어..
오늘 알아볼 것 저번 시간에 이어서 RoomDB에 대해서 조금 더 알아보려고 한다. Entiry '개체'인 entity는 관련이 있는 속성들이 모여 하나의 정보 단위를 말한다. 개체(Entity) 우리가 아는 객체(object)와는 비슷하지만 다른 의미가 있다. 객체는 정보와 동작, 기능 등을 가지고 있지만 개체는 정보 뿐다. 아래 코드는 생성 방법이다. @Entity(tableName = "UserTable") data class User ( var name: String, var age: String, var phone: String ){ @PrimaryKey(autoGenerate = true) var id: Int = 0 }다음과 같이 @Entity라는 어노테이션을 붙여준다. pri..

오늘 공부한 것 오늘은 RoomDB의 대해서 공부했다. RoomDB란 Room은 스마트폰 내장에 DB에 데이터를 저장하기 위해서 사용하는 라이브러리이다. 간단히 개발자로써 말하자면 스마트폰 전용 DB라고 보면되겠다. 보통 메모장 저장, 일정 저장, 웹툰 등의 각종 즐겨찾기 저장 등에 사용된다. 원래 과저에는 이역할을 SQLite가 했는데 여러 단점 때문에 Room으로 대체되었다. 위에 그림을 보면 단점들이 나온다. 내용적으로 이러쿵저러쿵 그냥 어려워서...그러니 바꾸었겠지 진짜 궁금한사람들은 찾아보길 바란다. Room 우리가 간단히 RooDB라고 부르는 이놈은 사실 SQLite를 활용해서 객체를 매핑해주는 요녁이다. 구글에서는 Room을 쓰기릴 권장한다. 구지 SQLite를 쓰겟다면 말리지 않겠다.(솔직..

오늘 알아볼것은 두 정수 사이의 합 두 정수 사이의 값을 모두 더한 값을 찾는 알고리즘이다. 이 문제를 풀기위해서는 간단히 몇가지만 생각해보면 된다. 바로 반복문이다. 우리는 반복문의 구조를 알고 있다 그렇다면 두 정수를 시작지점과 끝점으로 놓으면 된다. 그렇지만 여기는 함정이 있다. 바로 어떤 수가 큰 수 인지 알 수 있는가? 그러다 우리는 일단 두 정수 중 큰 수가 무엇인지 찾아야된다. 자 다음아래 코드는 정답코드이다. class Solution { fun solution(a: Int, b: Int): Long { var answer: Long = 0 var min = a var max = b var temp = 0 if(min>max){ temp = min min=max max = temp } fo..