이와 같이 'findViewById'를 사용하여 뷰에 접근할 수 있습니다. 하지만 이 방법은 실행 시 모든 뷰 계층을 순회하여 해당 ID를 가진 뷰를 찾기 때문에 복잡한 뷰 계층 구조에서는 시간이 오래 걸릴 수 있습니다. 또한 다른 레이아웃 파일에서 같은 ID를 사용하
ViewModel 개요(https://developer.android.com/topic/libraries/architecture/viewmodel\[활동 수명 주기에 관한 이해](https://developer.android.com/guide/comp
LiveData란 안드로이드에서 데이터를 관리하는 방법중에 하나이다. 앱의 상태(라이프사이클)에 따라 데이터를 관찰하고,앱의 상태가 바뀔때마다 그에 맞게 데이터를 업데이트하게끔 만들수 있다.즉 데이터가 변경되면 observer을 통해 Ui에 즉각적으로 업데이트 할 수
LiveData는 앱의 상태에 따라 데이터를 관찰하고,그에 맞게 데이터를 적용하게끔 도와주는 도구이다. 그리고 ViewModel은 생명주기가 변해도 데이터를 보존해주는 '변치 않는 데이터저장소'와 같은 역할을 하는 도구이다. 이둘을 함께 사용하면 어떻게될까? Main
MutatbleLiveData는 읽고 쓰기가 모두 가능하지만 LiveData는 읽기만 가능하다.라이브데이터값을 뷰모델에서 변경해야되는데 외부에서 변경하지 않기 하기 위해 하는거다.MutableLiveData를 사용하면 아래와 같이 MainActivity에서 값을 직접
Fragment는 Activity 내에 독립적인 화면을 가질수 있기때문에 뷰를 생성하고 파괴하는 과정을 추가로 관리한다. 따라서 Fragment에는 onCreateView()와 onDestroyView()라는 추가적인 뷰생성, 뷰파괴 단계가 라이프사이클에 존재한다. 이
Fragment에서 LiveData를 사용하기 우선 mainActivity에서 fragment를 만들고, MainActivity 데이터를 관리해줄 ViewModel을 만들어준다. 뷰모델에서는 라이브데이터를 사용하게끔 만들어준다. BlankViewModel1 그리고
LiveData Transformations라고도 한다.아래사진과 같이 숫자를 입력하면 그게 두번 더해진 값이나 두번 곱해진 값이 나오는 앱으로 알아보고자한다.먼저 데이터바인딩을 해주고라이브데이터를 이용한 뷰모델을 만든다. setLiveDataValue는 EditTex
이전 포스트에서는 LiveData의 값을 변경하는 방법에 대해 다루었는데, MainActivity에서 직접적으로 it 간의 산술 연산을 통해 값을 변경했습니다. 그러나 이 방법은 유지보수가 어려울 뿐만 아니라, 다른 뷰에서 재사용이 어렵다는 단점이 있습니다. 이번 포스
랜덤으로 과일이름과 글자순서가 섞이는 앱 '랜덤으로 과일과 글자순서가 섞이는 앱'을 만듬으로서 dataBinding을 통해 liveData를 ui에 연결하는법을 알아보려고 한다 'next'버튼을 누르면 랜덤의 과일이 가장 위 텍스트에 나오고, 나머지 아래 두 텍스트에
retrofit이란 안드로이드나 자바환경에서 restful웹서비스와 통신을 쉽게 할 수 있도록 도와주는 라이브러리이다. 웹서비스와 데이터를 주고받을때는 HTTP프로토콜을 사용해야하는데, 이를 직접 다루는 건 복잡해서 쉽게 만들어준다. 특징으로는 HTTP API을 자바인
공식문서 에 따르면 WorkManager는 지속적인 작업에 권장되는 솔루션입니다. 앱이 다시 시작되거나 시스템이 재부팅될 때 작업이 예약된 채로 남아 있으면 그 작업은 유지됩니다. 대부분의 백그라운드 처리는 지속적인 작업을 통해 가장 잘 처리되므로 WorkManage
MainActivity에서 WorkManager로 데이터를 전달하려면 .setInputData(myData)를 사용해 보내면 됩니다. 아래 코드는 a와 b라는 키로 각각 10, 20이라는 값을 가진 Data를 생성하고, 이를 WorkManagerB로 전달하는 예시입니다
아래와 같이 기존 코드로 3개의 WorkManager를 실행시키려면 이런식으로 해야했다. 이렇게 하면 결과는 아래와 같이 동시에 3개의 workmanager가 실행된다. 하지만 여기서 A,B를 실행시키고 그다음에 C를 실행시키려면 이런식으로 사용하면 된다. 결과는
WorkManager를 활용하면 백그라운드 작업의 진행률을 표시해줄수 있습니다. 단 이 과정에서 개발자가 직접 진행률을 계산하고 업데이트해야합니다. 아래는 전체 파일의 크기와 현재까지 다운로드 된 크기의 데이터를 이용하여 진행률을 계산하는 방식입니다.이렇게 계산된 진행
내가 어떤 로직을 15분이나, 1시간, 하루마다 반복적으로 실행하고 싶을때는 어떡해야할까?아래 코드와 같이 workManager가 실행되면 현재날짜와 시각이 찍히도록 하였다.이 workmanager를 15분마다 실행시키고 싶으면 PeriodicWorkRequestBui
WorkManager와 코루틴을 함께 사용하려면 CoroutineWorker를 이용해야 합니다.코루틴을 사용해서 비동기 작업을 수행할 수 있게 도와줍니다.또한, 작업을 수행하는 스레드를 변경하고 싶을 경우에는 withContext(Dispatchers.IO)를 사용하면
먼저, 두 개의 프래그먼트를 생성합니다. 이 예제에서는 각 프래그먼트에 텍스트를 추가하여 구분하겠습니다.네비게이션을 구현하기 위해 네비게이션 리소스 파일을 생성합니다.MainActivity의 레이아웃 XML에서 NavHostFragment를 추가합니다. 이 NavHos
먼저, 프래그먼트를 세 개 생성하고, 버튼을 누를 때 순차적으로 1 -> 2 -> 3으로 이동하도록 설정합니다.일반적으로 뒤로 가기 버튼을 누르면, 프래그먼트는 최근에 방문했던 프래그먼트로 돌아갑니다. 즉, 3 -> 2 -> 1로 이동하게 됩니다.하지만 저는 3에서 바
Bundle은 사실상 키-값 쌍의 컨테이너라고 볼 수 있습니다. Map과 비슷한 개념입니다. Bundle에는 여러 타입의 값들을 저장할 수 있습니다. 그리고 키를 사용하여 값을 넣거나 가져오면 됩니다.데이터를 보낼때데이터를 받을때
Safe Args를 사용하면 프래그먼트 간에 데이터를 안전하게 전달할 수 있습니다. 데이터를 전달하지 않았을 때 기본값을 설정하는 것도 가능합니다. 또한, Safe Args는 데이터의 타입 안전성을 보장해주기 때문에 런타임 에러를 방지하는 데 도움이 됩니다.프로젝트 수
안드로이드 네비게이션에서는 네 가지 애니메이션을 지정할 수 있습니다.enterAnim: A 프래그먼트에서 B 프래그먼트로 전환할 때 B 프래그먼트가 보여지는 방식exitAnim: A 프래그먼트에서 B 프래그먼트로 전환할 때 A 프래그먼트가 사라지는 방식popEnterA
코루틴은 비동기 작업을 간편하게 수행할 수 있는 코틀린의 도구입니다. 코루틴을 사용하면 블로킹 없이, 즉 애플리케이션의 다른 부분이 멈추지 않고 계속 실행되면서도 논블로킹 방식으로 비동기 코드를 작성할 수 있습니다. 이는 앱의 반응성을 향상시키고, 사용자 경험을 개선하