일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코틀린
- 코루틴
- 반응형 프로그래밍
- RxKotiln
- Go언어
- android
- MVVM
- 안드로이드 개발자
- 일상
- Flutter
- 알고리즘
- 프로그래머스
- Swift 문법
- 안드로이드 컴포즈
- Firebase
- 개발자
- 안드로이드 다이얼로그
- 이펙티브코틀린
- react
- 코딩테스트
- 안드로이드
- android compose
- Rxjava 안드로이드
- Dev6
- 잡담
- 이펙티브 코틀린
- Java
- RxJava
- Kotiln
- swift map
- Today
- Total
목록Android (85)
최데브는 오늘도 프로그래밍을 한다.
보통 sealed class 를 이용해서 각 이벤트마다 따로 묶어서 기능의 성격에 맞게 구분하는데 한 액티비티에 프래그먼트가 3개가 들어있는 화면이 있다고 가정하자 그리고 액티비티의 viewModel 을 모두가 공유하고 있는 상황일때 하나의 event flow 만을 이용해서 처리하면 각 프래그먼트에서 같은 flow 를 콜렉트 하는 상황이 생긴다. 이러면 다른 이벤트를 처리하기전 기존의 flow 를 해제해주지 않으면 한 곳에서 진행중인 collect 가 다른 프래그먼트로 가야할 데이터를 계속 가져가서 원하는 화면에서 원하는대로 동작하지 않는 상황이 생긴다. 그래서 내린 결론은 event flow 는 한 액티비티나 한 프래그먼트에서 즉, View 를 기준으로 같이 쓰이는 애들끼리 묶어서 따로 만들어주는게 관..
휴일이지만 일 때문에 어쩌다보니 일 아닌 일을 하고 있는데 시간도 많이 남고해서 미뤄놨던 테스트 코드나 적어볼까 하고 뒤적뒤적 하는중 코틀린용 mock 테스트 라이브러리 mockK를 발견하고 테스트 코드를 끄적여봤다. 기존에 자바 진영에서 많이 쓰던 mockito 가 대표적인 mock 라이브러리지만 mockK도 코틀린에 좀 더 적합한 방식을 제공하는것뿐 전체적인 매커니즘은 크게 다르지 않았다. 아 참, 이 글을 읽으러 누추한 블로그까지 찾아오셨다면 mock 에 대해서 알고 있는 분일거라 생각하지만 mock 은 모의객체를 의미한다. 풀어서 말하면 실제로 내부 코드들이 전부 작성되어 작동하는게 아닌 껍데기뿐인 객체라는 말이다. 이런건 왜 필요할까? 귀찮고 불편해서다. 테스트 코드를 작성하다보면 안드로이드의 ..
컴포즈를 사용하면 기존 Lifecycle 을 이용할때랑 같은 방식으로 작동하지가 않는다. 조금 다른 방식을 사용해야하는데 컴포즈에서 말하는 부수효과에 대한 이해가 필요하다. https://developer.android.com/jetpack/compose/side-effects?hl=ko Compose의 부수 효과 | Jetpack Compose | Android Developers Compose의 부수 효과 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 부수 효과는 구성 가능한 함수의 범위 밖에서 발생하는 앱 상태에 관한 변경사항입니다. developer.android.com 위 링크에 DisposableEffect 에 대해 예시를 들때 아래 코드와 비슷한 예제가 나온다..
예전에 작성된 코드를 다시 유지보수하는 작업이 필요했다. 이제는 마켓에 앱을 올리려면 targetsdk 가 31 이상이 되도록 강제되는데 이때 버전을 올리면서 블루투스 권한부여에 문제가 생겼고 라는 퍼미션을 추가하여 해결했다. 매니페스트 파일에 위 권한들을 추가해주고 블루투스 권한을 요청하는 시점에서 val permissionList = mutableListOf() for (permission in permissions) { permissionList.add(permission) } ActivityCompat.requestPermissions(context as Activity, permissionList.toTypedArray(), 200) 위 코드처럼 요청해줬다. 코드 일부만 가져와서 적은거라 제대로..
프로젝트를 하다가 간만에 Viewpager 를 쓸일이 생겼다. 뷰페이저 자체가 예전부터 있었다보니 여러가지 방법으로 구현하는 방식이 있는데 이번에 나는 ViewPager2 와 FragmentStateAdapter 를 이용해서 만들어 보기로 했다. 먼저 ViewPager 가 지원중단되고 ViewPager2 로 몇년전에 넘어가게 됐는데 알아보는김에 왜 바뀌게 됐는지도 한번 알아보자. 대표적인 ViewPager 의 문제는 1. 리사이클러뷰에 뷰페이저를 집어 넣을때 발생한다. 뷰페이저는 PagerAdapter 기반으로 구성됐는데 스크롤을 할때마다 instantiateltem() 과 destroyItem() 메소드가 호출되면서 스크롤이 버벅거리는 문제가 있었다. * instantiateltem() : 화면에 표시..
최근 Dev6 프로젝트를 새로 개발하면 스플래시 스크린을 만들일이 생겼다. 이번에 스플래시 스크린을 만들면서 안드로이드 12 부터 바뀐 스플래시 스크린을 적용해보며 정리하는 글이다. 먼저 라이브러리를 추가하자. dependencies { implementation 'androidx.core:core-splashscreen:1.0.0-beta01' } 위 처럼 스플래시 스크린 라이브러리를 import 해준다. 이 라이브러리를 사용하려면 minSdk 는 21이상 , targetSdk 는 31 이니 참고하자. themes.xml 에 스플래시 스크린 테마를 추가하자. 이렇게만 보여주면 뭐가 무슨 옵션인지 찾아보기 귀찮으니 몇개 적어보자. windowSplashScreenBackground: splashscree..