본문 바로가기

전체 글

(73)
안드로이드 개발 (31) Activity Life Cycle 프로그래밍에서 주로 사용되는 생명주기(Life Cycle)은 프로그래밍 공학 쪽으로나 다양한 곳곳에서 사용되는 용어입니다. Android 에서 말하는 LifeCycle은 주로 상황에 따라 생성 ~ 제거가 호출되는 전체 단계를 뜻합니다. Google Android는 LifeCycle에 맞게 콜백함수를 제공함으로써, Android 개발자가 특정 생명주기나 전체 생명주기를 이용해서 원하는 상황에 원하는 동작을 실행하도록 코드를 구현할 수 있습니다. Android 에서 Life Cycle은 여러곳에 존재합니다. View, Service, BroadCastReceiver 등등 생성 ~ 제거 되는 순간에 따라 콜백함수를 커스텀 할 수 있습니다. 여러 Life Cycle 중에 실제 개발하면서 자주 신경쓰게 될 Act..
안드로이드 개발 (30) viewModelScope Android 는 현재 집중적으로 Coroutine 을 밀고 있습니다. Android에서 Coroutine을 응용한 api와 Coroutine 관련된 코드 스니펫 등등이 등장하면서 앞으로 Android에서 Coroutine을 활용할일이 많아지고 있습니다. 그래서 과거 비동기 관련 코드들을 Coroutine 으로 마이그레이션을 진행중이거나 완료한 소식들을 간혹 접하기도 했습니다. 그만큼 Coroutine에 대한 열풍이 뜨겁다고 느껴집니다. 1. ViewModelScope 란? 특히 Jetpack Library 를 많이 사용하는데 Jetpack에 viewModelScope 라는 Coroutine Scope를 지원해줍니다. viewModelScope는 ViewModel에서 onCleared() 호출 할때 직접..
Kotlin (7) getter 와 Assignment (=)의 차이 Kotlin 예제들을 보다보면 get() 통해서 해당 프로퍼티에 직접적으로 값을 대입하지 않고(=) get()을 통해 다른 객체의 값을 사용하는 경우가 있습니다. 예를들어, 안드로이드 스튜디오에서 제공하는 Jetpack 의 ViewModel에서 LiveData를 사용할 때 MutableLiveData와 함께 사용해서 LiveData에 MutableLive의 value를 get() 하는 상황들을 많이 보셧을겁니다. 어떤 경우에 직접 대입 Assignment (=) 을 사용하지 않고 get()를 사용하는지 살펴보도록 하겠습니다. 1.val, var 코틀린의 프로퍼티는 기본적으로 field와 getter / setter를 자동생성 해줍니다. 예를들어 변수를 하나만들어서 이 변수를 자바 코드로 변환을 한다면 아..
안드로이드 개발 (29) Fragment에서 ViewBinding 사용 시 주의할 점 1. ViewBinding ViewBinding 은 xml를 자동으로 바인딩 클래스로 생성해서 xml의 View를 안전하게 사용할 수 있습니다. kotlin extension deprecated 이 되고나서 요즘은 ViewBinding, DataBinding을 위주로 사용하는 추세이기도 합니다. Fragment에서 ViewBinding 사용시 주의할 점이 한가지가 있는데 이에 대해 정리를 해보도록 하겠습니다. 2. Fragment 의 LifeCycle Fragment 는 onCreateView에서 View를 생성하기 때문에 2개의 LifeCycle이 존재합니다. Fragment LifeCycle, Fragment View LifeCycle 이 두 가지가 있습니다. Fragment LifeCycle: on..
안드로이드 개발 (28) ViewLifeCycleOwner 블로그 재작성 시작입니다. jetpack 라이브러리를 사용하다보면 뷰모델 프로바이더를 생성할 때나 라이브 데이타 observe 함수에 매개 변수로 lifeCycleOwner 를 전달해줘야하는 경우가 있습니다. 검색을 하다보면 주로 viewLifeCycleOwner 를 매개변수로 전달하는 예제가 많은데 viewLifeCycleOwner에 대해 알아보도록 하겠습니다. 0. viewLifeCycleOwner 란? Fragment 를 사용하다보면 onCreateView() 함수이 호출 될 때, view 를 생성하고 onViewCreated() 함수에서 이미 생성한 view를 사용하는 경우가 많습니다. viewLifeCycleOwner 는 onCreateView() 에서 생성되는 view의 LifeCycle 를 ..
안드로이드 개발 (27) paging 처리에 안드로이드 권장 architecture 적용하기 안녕하세요 Loner 입니다. 페이징 처리에 관한 이전 포스팅과 이어지는 내용입니다. 이전 포스팅에서 했던 작업은 다음과 같습니다. 0. 정리 주제 검색창에 검색어 입력시 검색 Api를 이용해서 네트워크에서 데이터를 20개씩 받아오면 화면에 렌더링하는 페이징 처리 - 검색어를 변경했을 때 기존 데이터는 리셋하고 1페이지의 데이터 갯수 20개를 가져옴 - 스크롤을 데이터 끝까지 터치 했을 때 다음 페이지의 데이터 갯수 20개를 추가로 불러와서 현재 데이터와 합침 - 검색창에서 타이핑할때 이전에 검색했던 기록들을 보여줌 - 이전 포스팅 작업 순서- 1. paging 처리에 필요한 핵심 로직 구상 https://gift123.tistory.com/52 안드로이드 개발 (23) - 페이징 처리 로직 안녕하세요 ..
안드로이드 개발 (26) ISO 8601 변환하기 안녕하세요 Loner입니다. 오늘은 짦게 포스팅하려고 합니다. 1. ISO 8601 최근의 어떠한 Api를 사용하다가 서버에서 저장된 time이 ISO 8601형식의 String으로 DB에 있다는걸 확인을 하게 되었습니다. ISO 8601의 경우 UTC 시간대인지 확인할 수 있고 비교도 할수 있으며 밀리세컨드의 시간대까지 확인할 수 있는 특징이 있습니다. 자세한 내용은 아래 글을 참고 하면 좋을 것 같습니다. https://java119.tistory.com/24 [ISO] ISO 8601 개념 ISO 날짜 형식이란? 정식 명칭 Date elements and interchange formats - Information interchange - Representation of dates and times..
안드로이드 개발 (25) - Coroutine Job 사용과 AutoCompleteTextView를 사용한 검색 기록 보기 https://gift123.tistory.com/52?category=967702 안드로이드 개발 (23) - 페이징 처리 로직 안녕하세요 Loner입니다. 오랜만에 글을 작성하게 됩니다. 최근에 많은 사건이 있었고, 수습하느라 정신이 없었네요 이포스팅은 최근에 겪은 문제를 참고해서 정리하는 글입니다. 페이징 처리를 gift123.tistory.com https://gift123.tistory.com/53?category=967702 안드로이드 개발 (24) - 페이징 처리 실제 구현 https://gift123.tistory.com/52 안드로이드 개발 (23) - 페이징 처리 1편 안녕하세요 Loner입니다. 오랜만에 글을 작성하게 됩니다. 최근에 많은 사건이 있었고, 수습하느라 정신이 없었네요 이..