도리안의 2025년 개발기 #123 - 데이터가 업데이트 될 때마다 리스트가 필요한 경우와 처음 1번만 필요한 경우
데이터가 업데이트 될 때마다 리스트가 필요한 경우와 처음 1번만 필요한 경우
No. 123
2025. 07. 07 (월) | Written by @dorian-dev
오늘의 개발기
안드로이드 앱에서 Room 데이터베이스를 구현한다면, 데이터를 읽는 함수의 리턴 타입은 Flow<원하는 데이터의 타입>으로 지정할 수 있다. 이것의 장점은 해당 데이터가 바뀔 때마다 Flow를 통해 새로운 데이터를 가져올 수 있다는 것이다. 예를 들어, 아래와 같은 DAO 인터페이스를 정의했다면, 사용자의 정보가 추가/삭제/수정될 때마다 getAll() 함수 호출로 반환받은 Flow 객체를 통해 리스트를 새로 받을 수 있다.
@Dao
interface UserDao {
@Query("SELECT * FROM user")
fun getAll(): Flow<List<User>>
}
아래 flowUserList는 사용자 리스트를 구독하는 예이다.
userDao.getAll().collect { userList: List<User> ->
// 사용자 관련 코드 작성
}
그런데 상황에 따라서는 데이터를 1번만 읽어야 하는 경우도 있다. 이 때에는 flow { ... } 함수를 활용하여 데이터를 1번만 로딩할 수 있다.아래 예에서 getAll().first()는 최근 사용자 리스트를 읽는다고 이해하면 된다.
val flowUserList = flow {
emit(userDao.getAll().first()) // 최근 사용자 리스트를 1번만 방출
}
지금은 조금 익숙해졌지만, Room을 통해 데이터를 1번만 읽어야 하는 경우를 어떻게 처리해야 할지가 어리둥절했었다. 나중에 또 헤매지 않기 위해 포스트에 적어 둔다.
추가로...
위에 작성한 코드는 머리 속에 기억된 것을 개략적으로 적은 것이다. 나중에 실제로 돌아가는 코드를 다시 적을 예정이다.
지난 2025년 개발기
- #122 - 안드로이드 개발자의 휴직
- #121 - 앞으로는 자기계발 시간 확보가 중요
- #120 - 안드로이드 15 기기에서 Volley 라이브러리 작동 안되는 듯
- #119 - 안드로이드 앱 타겟 버전 35로 올려야 함
- #118 - 예상보다 길어지는 홈 화면 개발 일정
- #117 - 프리뷰(preview)를 추가하며 개발 중
- #116 - 다음 프로젝트에 대한 소문
- #115 - 저번 프로젝트에서 Jetpack Compose로 리뉴얼 하길 잘했다고 생각한 이유
- #114 - 프로젝트를 마치고 긴장이 풀렸다
- #113 - 팝업을 닫은 후에도 쿠폰 입력 화면이 여전히 남아 있는 문제 해결
- #112 - 출시를 앞두고 쿠폰 입력 화면이 다시 뜨는 문제
- #111 - 다음 프로젝트 일정에 대한 걱정
- #110 - 이미지 추가 변경 건 그리고 다음 프로젝트 준비
- #109 - 내부 테스트 없이 Play Asset Delivery 테스트 가능 (Android)
- #108 - 다음 프로젝트 시작해야 하는데...
- #107 - 학습 알림 추가 화면에서 다시 나타난 버그
- #106 - Room 데이터 업데이트 직후 UI 작동 오류 (팝업 A, B가 연달아 뜸)
- #105 - 미래에 대한 기대와 걱정
- #104 - Room으로 데이터 읽기는 즉시 반환 함수보다 Flow 권장
- #103 - 매주 금요일 저녁에는 '한주 동안 내가 한 일'을 기록하며 회고
- #102 - Jetpack Compose로 클릭 처리시, 팝업이 잠시 보이고 다시 사라지는 문제
- #101 - 홈 화면에서 진도율이 0%만 뜨는 버그를 수정하며 배운 점
- #1 ~ #100
Layout provided by Steemit Enhancer hommage by ayogom
Posted through the ECblog app (https://blog.etain.club)
안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.
안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-dev님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!
Upvoted! Thank you for supporting witness @jswit.