일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kotlin
- 특가촌
- Koin
- 카드내역 공유
- 특가게시판
- moveToState
- 카드 내역 공유 앱
- andorid
- todofication
- 특가알람
- 대학톡
- 안드로이드
- 뷰 상태복구
- 작성
- nvidia-docker
- 타이머앱
- Quickly
- recyclerview
- Android
- 올인원타이머
- 안드로이드 클린 아키텍쳐
- fragment
- android clean architecture
- RxJava
- compileKotlin FAILED
- List
- RX
- onViewCreated
- java.lang.OutOfMemoryError: Java heap space
- 뷰 상태 저장
- Today
- Total
목록android (29)
seoft
개요 최근 들어 리사이클러뷰가 포함되지 않는 앱이 거의 없을 정도이고 앱의 요구사항이 복잡해지면서 멀티타입이나 중첩 구조도 쉽게 접할 수 있습니다. 리사이클러뷰의 구성을 위해서는 아답터와 뷰홀더도 함께 구성해야 하지만, 특이한 케이스가 아니라면 불필요한 보일러플레이트 코드로도 자리매김할 수 있어 보입니다. 이번 포스팅에서는 리사이클러뷰 구성시 아답터와 뷰홀더의 보일러플레이트를 최소화하는 방법과 관련된 라이브러리 또한 소개하고자 합니다. 샘플 프로젝트 소개 여러 방식 비교를 위해 리스트를 페이징 하는 간단한 샘플 프로젝트를 구성하였습니다. (링크) 설명을 덧붙이면 다음과 같습니다. - 동일 시나리오 세 가지 방식 구성 - A. 일반적인 리사이클러뷰 구성 - B. 바인딩을 통한 보일러플레이트 감소 방안의 리..
개요 개인적으로 리사이클러뷰를 구현할 때 DiffUtil을 엄청 믿고 신뢰하며 사용해왔었는데, 팀 내에서 수동적인 notifyXXX 갱신 방식과 DiffUtil 방식의 차이에 대해 잠시 이야기가 나왔습니다. notifyXXX 는 변경대상을 알고 대상 부분에만 변경요청을 하는데 비해, 디프유틸을 사용하게 되면 하나의 아이템에 대한 변경을 위해서 full size diff 를 검사가 필요하기 때문에 성능적인 측면에서 비효율적인 것은 사실입니다. 하지만 예전부터 디바이스 성능이 상향 표준화가 되면서 DiffUtil 도입시의 성능갭이 별로 차이가 나지 않는다면 구현 혹은 유지보수의 용이성과 티가 안나는 성능차이는 트레이드오프할 가치가 있을 것이고 그렇기에 구글 프레임워크에도 포함되어 나오고 있는 거라 생각하고 ..
사이드 프로젝트 진행 중 간단하게 Repository 대상의 테스트가 진행되면 좋을 것 같아 진행하였고, 관련해서 기술합니다. 단순히 최근검색어를 로컬로 get, add, clear 하는 로직을 테스트하기위해 필요한 부분중 핵심적인 일부 코드만 모았습니다. 먼저 유닛테스트와 디펜던시가 없는 실 프로젝트 구성 중 koin 인잭션이 있는 코드들을 기술합니다. SettingRepository.kt DataSource와 Preference 주입도 내부적으로 포함되있으나 해당 코드들은 생략하고 unit test로 사용하지 않는 코드들도 생략합니다. ResultModule.kt 실제 프로젝트 구성에서 전반적인 di를 구성합니다, 해당 예제에서는 repositoryModule, localModule 만 관여되며, S..
[deprecated] 클린아키틱쳐에 대해 일부 생각이 바뀌어 추후 새로작성 예정, repository 도 내리고, 히스토리 관리차원에서 블로그 내용은 유지 [개요] 클린 아키텍쳐에 대한 숙지를 위해 작은 데모앱을 구성, 구성과정을 기록합니다. Github : deprecated(github.com/seoft/seoft-android-clean-architecture) seoft/seoft-android-clean-architecture Contribute to seoft/seoft-android-clean-architecture development by creating an account on GitHub. github.com 데모앱의 간단한 요구사항은 다음과 같습니다. - ID 와 페스워드를 서버에..
본인의 경우에는 자동생성된 Night모드를 고려하지 않아 DayNight를 뺏는데 (Theme.MaterialComponents.DayNight.DarkActionBar) 작동하지않았다. 결론 : selectableItemBackgroundBorderless 의 ripple 효과가 안될때 style 부분을 고려해봐야한다.
A프래그먼트의 onCreateView에 인플레이트된 뷰는 RecyclerView와 EditText를 가지고 있다 A프래그먼트를 B프래그먼트로 replace, commit 하고 다시 B프래그먼트에서 A프래그먼트로 replace, commit 하게 될 경우 기존의 RecyclerView 아이템들과 스크롤 포지션, 작성중인 EditText가 유지되는걸 확인할 수 있다. 그러면 어느시점에 어디에 저장되고 어느시점에 복구되는걸까? 복구되는 시점을 먼저 서술하면, Fragment는 SparseArray타입의 mSavedViewState를 가지고있고 이곳에 뷰의 상태를 저장시킨다 프래그먼트만을 확인했을때 onCreateView 콜백 호출 시점에는 mSavedViewState 를 보유중이며 onViewStateRest..
4.1.1 버전에서 저장 단축키를 누르고 Shift + F10 을 통해 Run을 했지만 바로 적용이 안되는 문제가 발생하였다. 다음 설정을 해서 문제를 해결할 수 있었다. 1. Run/Debug Configurations 에서 Allow parallel run 체크 해제 2. Settings - Build, Execution, Deployment - Deployment 에서 다음 두 사항 체크 다음 설정을 마친 후 저장후 rerun 하게 되면 반영이 된다 참조 : stackoverflow.com/questions/60833124/i-have-to-press-run-twice-or-clean-project-before-run-on-android-studio
[AndroidRemoteConfig 개요] 혹시 이런 상황 겪으신적 없으신가요 1. 앱에 연동된 서버가 특정 이유로 사용할 수 없어 사용자에게 공지를 노출해야 할 경우 2. 앱의 특정 버전에 치명적인 버그가 발생하여 특정버전 이하 사용자를 강제업데이트 시켜야 할 경우 위의 상황에 대비해서 앱을 제작하는 과정에 특정정보를 받아 처리하는 로직을 사전에 구현해야합니다. 이런경우 보통 firebase의 remote config를 사용하는데, 사용할 스팩이 위와 같이 단순한데 firebase console까지 구축하고 연동하는 번거로움 혹은 firebase의 remote config 제한 스팩보다 더 자유롭게 사용이 필요한 경우 자체적인 remoteConfig가 필요할 수 있습니다. 저 같은 경우에는 24시간,..