본문 바로가기

분류 전체보기29

6. SharedPreference에서 DataStore로 변경하여 데이터 일관성 문제 해결하기 (RunWithMe 리팩토링) 6. SharedPreference에서 DataStore로 변경 안녕하세요 RunWithMe 리팩토링 프로젝트에서 팀장과 안드로이드 개발을 맡은 서경원입니다. RunWithMe 프로젝트를 리팩토링하면서 공부한 내용에 대해서 설명해보려합니다. 이해가 안되는 내용이나 제가 잘못 적은 부분이 있다면 꼭 댓글 남겨주세요. 이번 프로젝트에서 기존에 사용하던 SharedPreference를 DataStore로 변경하고자 했습니다. SharedPreference가 가진 문제점 때문이었습니다. 여러분들은 SharedPreference의 문제점에 대해 알고 계신가요???? SharedPreference의 문제점에 대해서 ChatGpt에 물어보겠습니다. gpt 답변: 안드로이드에서 Share.. 2023. 5. 30.
5. CustomView로 재사용성 향상 (RunWithMe 리팩토링) 5. CustomView로 재사용성 향상 안녕하세요 RunWithMe 리팩토링 프로젝트에서 팀장과 안드로이드 개발을 맡은 서경원입니다. RunWithMe 프로젝트를 리팩토링하면서 공부한 내용에 대해서 설명해보려합니다. 이해가 안되는 내용이나 제가 잘못 적은 부분이 있다면 꼭 댓글 남겨주세요. 이전에 ‘우리집’이라는 프로젝트를 Compose로 진행했던 경험이 있습니다. 컴포즈를 사용하면서 제일 좋았던 점은 Component 재사용성이 뛰어나다는 점이었습니다. xml에서도 custom view를 활용해 view 재사용성을 향상시키고자 했습니다. 다른 뷰는 재사용하는 부분이 거의 없어 가장 많이 사용하는 Toolbar에 CustomView를 적용하였습니다. Toolbar는 총 4.. 2023. 5. 27.
4. EventFlow 도입 (RunWithMe 리팩토링) 4. EventFlow 도입 안녕하세요 RunWithMe 리팩토링 프로젝트에서 팀장과 안드로이드 개발을 맡은 서경원입니다. RunWithMe 프로젝트를 리팩토링하면서 공부한 내용에 대해서 설명해보려합니다. 이해가 안되는 내용이나 제가 잘못 적은 부분이 있다면 꼭 댓글 남겨주세요. 이 글은 Ted Park님의 블로그를 참고하여 작성했습니다. MVVM의 ViewModel에서 이벤트를 처리하는 방법 6가지 MVVM의 ViewModel에서 이벤트를 처리하는 방법 6가지 지금 개발하시는 코드에서 ViewModel의 이벤트 처리를 어떻게 하고 계신가요? 헤이딜러에서 LiveData -> SingleLiveData -> SharedFlow -> EventFlow로 이벤트 처리 방법을 변.. 2023. 5. 26.
2. bindService를 적용하여 메모리 누수 방지하기 (RunWithMe 리팩토링) 2. bindService 적용하여 메모리 누수 방지하기 안녕하세요 RunWithMe 리팩토링 프로젝트에서 팀장과 안드로이드 개발을 맡은 서경원입니다. RunWithMe 프로젝트를 리팩토링하면서 배우게 된 내용에 대해서 설명해보려합니다. 이해가 안되는 내용이나 제가 잘못 적은 부분이 있다면 꼭 댓글 남겨주세요. startService와 bindService Service를 제대로 적용하기 위해 Service에 대해 공부했고 그 중 startService와 bindService의 차이점을 명확히 알고자했습니다. 아래는 startService와 bindService에 대한 설명입니다. 안드로이드에서 startService()와 bindService()는 서비스를 시작하는 두 가.. 2023. 5. 25.
1. LifecycleService와 Service의 차이점 (RunWithMe 리팩토링) 1. LifecycleService와 Service의 차이점 안녕하세요 RunWithMe 리팩토링 프로젝트에서 팀장과 안드로이드 개발을 맡은 서경원입니다. RunWithMe 프로젝트를 리팩토링하면서 배우게 된 내용에 대해서 설명해보려합니다. 이해가 안되는 내용이나 제가 잘못 적은 부분이 있다면 꼭 댓글 남겨주세요. LifecycleService 이건 뭐지?? 이전 RunWithMe 프로젝트 코드를 들여다보던 중에 러닝에 관한 서비스를 LifecycleService를 상속받아 사용하는 것을 보게되었습니다. LifecycleService는 무엇이고 그냥 Service와의 차이점에 대해서 궁금증이 생기게 되었습니다. 바로 LifecycleService를 들여다보았습니다. Serv.. 2023. 5. 25.
viewModelScope는 어떤 쓰레드를 사용할까? viewModelScope의 내부는 다음과 같다. return을 하면서 Dispatchers.Main을 넘겨주는데 이를 통해 Main 쓰레드를 사용하는 것을 알 수 있다. --- 추가 viewModelScope는 Retrofit을 이용하기 위해 IO 쓰레드로 바꾸지 않아도 된다. Retrofit을 만든 square에서 kotlinExtensions를 지원해주기 때문인데 Call을 내부적으로 호출하게 된다. 내부적으로 이미 통신을 해서 responseBody를 알려준 뒤 enqueue로 결과 값을 활용하고 있는 상황 2022. 7. 6.
백준 자바 14247 나무 자르기 로직은 간단합니다. 초기 나무 길이가 4이고 자라는 길이가 6일 때 만약 5일 후에 자른다면 4 + 6 * 4 로 28이고 5일 후에 다시 자른다면 30만큼을 자르게 되어 총 58만큼 자르게 됩니다. 중간에 자르지 않고 10일 후에 자르게 된다면? 4 + 6 * 9로 똑같이 58만큼 자르게 됩니다. 그러면 굳이 자라는 길이가 제일 긴 나무를 처음에 자를 필요가 없게 됩니다. 자라는 길이가 제일 적은 것부터 자르게 되면 되는 것입니다. 저는 자라는 길이를 정렬해주는 것을 class를 이용하여 정렬 시켜주어봤습니다. public class Baek14247 { public static class ATree{ int Hi; int Ai; } public static void main(String[] args).. 2022. 5. 10.
백준 1637 날카로운 눈 자바 https://www.acmicpc.net/problem/1637 1637번: 날카로운 눈 첫째 줄에 입력의 개수 N이 주어진다. N은 1이상 20,000이하인 수이다. 그 다음 줄부터 N줄에 걸쳐 세 개의 정수 A, C, B가 주어지는데, 이것은 A, A+B, A+2B, ..., A+kB (단, A+kB ≦ C) 의 정수들이 정수더미 www.acmicpc.net 정수더미 속에서 홀수 개 존재하는 정수를 찾으면 되는 문제입니다. 예제 입력을 보면 A C B 가 차례로 1 10 1 4 4 1 1 5 1 6 10 1 이 있습니다. 나오는 정수들을 살펴보면 1 2 3 4 5 6 7 8 9 10 4 1 2 3 4 5 6 7 8 9 10 정수더미는 위와 같이 있습니다. 이 정수더미를 1 이하의 수의 개수, 2 이.. 2022. 3. 20.
백준 15736 자바 청기 백기 (72ms 가장 빠른 코드!) 배수마다 깃발을 뒤집는 구조 1은 약수가 1개, 한번 뒤집힌다. 2는 약수가 2개 두번 뒤집힌다. -> 두 번 뒤집히면 원래 그대로 청색 4는 약수가 3개, 세 번 뒤집힌다. 5는 약수가 2개, 두 번 뒤집힌다. 6은 약수가 4개, 4 번 뒤집힌다. ... 9는 약수가 3개, 세 번 뒤집힌다. 규칙을 발견하셨나요?? 루트 N 이 정수 일때 약수가 홀 수로 나오게 됩니다.! (= 약수의 제곱이 N일 때!) 만약에 N이 24라면 백기가 위로 올라오는 수는? 1, 4, 9, 16 입니다. 모두 루트를 해보면 1,2,3,4 입니다. 반대로 생각해보면 N보다 작은 제곱수를 찾으면 됩니다. 그렇다면 아래와 같이 제곱이 N보다 커지기 전까지 count를 해주면 나오게 됩니다! import java.io.Buffere.. 2022. 2. 24.