안드로이드 스튜디오 3.6 이상 버전에서 부터 나온 XML 뷰와의 상호작용을 위한 기술입니다. 기존의 findViewById에서 안정성을 강화한 버전입니다.앱수준의 build.gradle의 android 필드 안에 다음과 같은 코드를 넣어 주셔야 합니다.다음 코드와 같
LiveData는 관찰 가능한 데이터 홀더 클래스입니다.액티비티, 프래그먼트, 서비스 등의 다른 앱 구성요소의 수명 주기를 인식합니다. 그렇기 때문에 활동 수명 주기 상태에 있는 앱 구성요소 관찰자만 업데이트합니다.UI와 데이터 상태의 일치 보장: 관찰자 패턴을 따르므
지금껏 안드로이드의 액티비티나 프래그먼트에서 생명주기 함수를 이용하여 생명 주기 상태 변화를 처리했습니다.이 방법을 사용하면 UI 컨트롤러에 부담을 주게 됩니다.이 문제를 해결하기 위해 안드로이드에서는 관찰자 패턴을 이용하여 다른 구성 요소 객체의 수명 주기를 관찰할
Open api를 사용하여 json 데이터를 원하는 형태로 파싱하려면 그에 맞는 data class를 만들어줘야할 때가 있습니다.분명 Koltin이 Java에 비해 코드량을 현저히 줄여주었음에도 클래스를 새로 작성하는 것은 아직도 부담이 되는 작업입니다.이런 번거로움을
안드로이드 스튜디오 범블비 버전에서 네비게이션 컴포넌트를 위한 Safe Args를 적용시키려 보니 다음과 같은 에러가 떴습니다.이는 build.gradle 파일의 plugin영역에 적용하고 싶은 플러그인 id 뒤에 version과 apply(false)를 작성해 주시면
데이터 바인딩은 레이아웃의 뷰를 앱 코드에 저장된 데이터와 연결하는 간단한 방법을 제공하는 라이브러리입니다.예를 들어, EditText 뷰를 ViewModel의 LiveData 와 연결한다고 가정해봅시다.여기서 단방향 바인딩을 사용하게 된다면, LiveData가 변경되
오늘날, 하나의 화면으로만 구성된 안드로이드 앱은 찾기 드뭅니다. 실제로 대부분의 앱은 사용자의 컨트롤로 여러 화면과 상호작용을 합니다.이전에는 이러한 복잡한 화면의 이동 경로를 한 눈에 보면서 구성하는 쉬운 방법이 없었기 때문에 많은 코드를 작성해서 화면 전환을 해야
오늘은 의존성 주입 패턴에 대해 이야기 해볼까 합니다.의존성 주입은 프로그래밍에서 널리 사용되는 기법으로, 하나의 객체가 다른 객체의 의존성을 제공하는 디자인 패턴입니다.의존성은 서비스로 사용할 수 있는 객체입니다. 클라이언트가 직접 어떤 서비스를 사용할 것인지 지정하
앱을 개발하다보면 대량의 데이터를 리사이클러뷰로 처리해야 할 때가 있습니다. 그럴 때마다 다량의 데이터를 한꺼번에 불러오게 되면 시스템이 무거워 지곤 했습니다.이 문제를 해결하기 위해 우리는 페이징 기능을 사용해야합니다.페이징 기능이란 시스템 리소스를 효율적으로 활용하
갤러리 앱을 만들고 있는데 그리드뷰의 span count가 바뀔 때마다 뷰의 width가 화면 너비에 따라 자동 조정 되면서 직사각형이 되곤 한다.. 이걸 정사각형으로 바꿀 수는 없을까 하루 종일 인터넷을 뒤져보고 마침내 해답을 찾았다.해답은 layout을 커스텀하여
프래그먼트에서 LiveData를 위해서 관찰자를 두거나, Flow를 위해 lifecycleScope가 필요할 때 viewLifeCycleOwner가 심심찮게 보이곤 합니다.위 코드에서 viewLifecycleOwner를 지우고 실행시켜도 물론 잘 돌아갑니다. 그렇지만
학부 시절에는 로직에 관한 모든 코드를 액티비티나 프래그먼트에 작성하곤 했습니다. 이런 코드들은 각각의 앱 구성요소의 수명주기에 의존하고 있어 UI데이터가 초기화 되거나 앱이 리프레시되는 위험성이 존재합니다. 따라서 효율적인 아키텍처를 구성하기 위해선 데이터 모델에서
안녕하세요. 오늘은 코루틴에서 비동기 처리를 위해 사용되는 Async와 Await 함수에 대해 이야기해볼까 합니다.Async는 launch 함수와 더불어 새 코루틴을 시작하여 긴 작업을 비동기 처리하는 방법 중에 하나입니다. 최근 개발하고 있는 앱도 한 번에 10개 이
로컬 DB로 저장한 내용을 앱의 상태에 맞는 카테고리로 정렬되도록 하려면 CASE WHEN ~ THEN ~ 구문을 사용하면 됩니다. 저 같은 경우는 카테고리 코드, 정렬 코드를 사용해서 카테고리 코드에 따른 오름차순, 내림차순 정렬을 하도록 다음과 같이 쿼리를 구성했습
요즘 채용 공고를 보면 MVC, MVP, MVVM에 관한 지식 보유자를 우대하는 공고를 많이 볼 수 있습니다. 저 또한 면접에서도 이런 MVVM이 뭔지? MVP와의 차이점에 대해서 많은 질문을 받곤 했습니다. 사실 저도 공부하는 단계지만 간략하게 정리해 보려고 합니다.
안드로이드 프로젝트를 진행하다 보면 일부 코드를 재사용하기 위해 BaseClass를 상속받아 사용하는 경우가 있었습니다. BaseActivity, BaseFragment, BaseViewModel, BaseListAdapter, BaseDialog 등등..소규모 프로젝