일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 안드로이드 개발자
- Dev6
- 코틀린
- 안드로이드 다이얼로그
- 코루틴
- Swift 문법
- MVVM
- react
- 프로그래머스
- 잡담
- Rxjava 안드로이드
- RxKotiln
- swift map
- Kotiln
- 알고리즘
- 반응형 프로그래밍
- Firebase
- 일상
- android
- 안드로이드 컴포즈
- 안드로이드
- Java
- Flutter
- RxJava
- 개발자
- 이펙티브 코틀린
- 이펙티브코틀린
- Go언어
- 코딩테스트
- android compose
- Today
- Total
목록Android (85)
최데브는 오늘도 프로그래밍을 한다.
하나의 Graph 에서 모든 화면을 관리하면 너무 어지럽고 복잡하다. 그래서 지금 하는 프로젝트에서는 화면별로 그래프를 분리해서 사용하는데 간단하게 inclue 를 적어서 써주자
멀티모듈로 프로젝트를 구성해서 앱 배포를 진행하고 있던 중 문제가 발생했는데 파이어베이스 json 파일을 모듈마다 하나씩 넣어주지 않아서 오류가 발생했고 하나씩 파일을 넣어주니까 aab 로 릴리즈 파일이 빌드 됐다.
StateFlow를 MVVM 패턴에서 UI 상태를 관리하고 반영하는데 사용하곤 했다. flow를 반복적을 관찰하며 최신 UI 상태를 얻어서 view에 보여줄 수 있는데 class MainViewModel: ViewModel(){ _viewState.value = _viewState.value.copy(checked = true) } 위 코드처럼 copy 함수를 사용해서 다른 값을 유지하면서 하나 이상의 속성을 변경하는것도 가능하다. 갑자기 copy 이야기를 뜬금없이 왜 했냐? 이런식으로 값의 수정이 일어나면 copy가 완료된 시점과 stateflow에 새로운 값이 내보내지는 시간 그 사이에 우연히 다른 코루틴이 다른 속성의 값을 업데이트 했다면? 의도치 않은 data class 값이 만들어질수도 있을 것..
팀 프로젝트를 하다가 기존에 로그인이 됐던 유저인지 처음 로그인 하는 유저인지 체크해서 로그인 화면으로 이동시킬지 자동으로 메인화면으로 이동하게 할지 체크하고 이동시켜주는 기능이 필요했다. 해당 프로젝트에서는 Jetpack navigation 을 사용하고 있었는데 위 동작을 정상적으로 보여주려면 startDestination 을 상황에 맞게 새로 설정해주는게 필요했다. 일단 해당 기능이 필요한 액티비티에서 lateinit var navController : NavController 네비게이션 동작을 컨트롤 해줄 NavController 을 선언해주자. 그리고 onCreate 에 val navHostFragment = supportFragmentManager.findFragmentById(R.id.join..
xml 에 다른 xml 파일을 include 하여 해당 xml에 포함되게 사용할수가 있는데 이때 그냥 해당 액티비티의 id로 view binding 을 하면 참조가 되지 않는다. 이때는 private lateinit var exampleBinding: InclueTopBinding exampleBinding = InclueTopBinding.inflate(layoutInflater) exampleBinding.tvLeft.setOnClickListener { findNavController().popBackStack() } include_top.xml 을 binding 했다. InclueTopBinding 은 해당 include xml 을 바인딩 한 것 tvLeft 는 include_top.xml 에 있..
페이징이라는 개념은 예전부터 있었다. 페이징을 내 멋대로 설명 해보자면 대량의 데이터를 불러올때 한번에 다 불러오면 리소스 낭비가 심하다. 이를 처리하는 전략이 페이징이였는데 100개의 데이터가 있으면 이걸 다 불러오지말고 한 페이지당 10개씩 다음 페이지가 보고 싶다고 하면 다음 페이지의 10개의 데이터를 보여줘라. 라는 개념이다. 그리고 안드로이드에서도 비슷한 니즈가 있었는데 스크롤을 내려서 데이터를 볼때 한번에 다 보여줄 필요없이 스크롤이 어느정도 내려왔을때 다음 데이터를 불러오면 좋지 않을까? 하는 점이다. 그리고 그걸 관리하기 쉽게 구현을 도와주는 라이브러리가 Paging3 다. 이게 최선인가에 대해서는 확실히 말하기 어렵지만 일단 내가 구현한 방법대로 설명을 해보려고 한다. 해당 예시는 MVV..