본문 바로가기

728x90
반응형

전체 글

State of the art communication between fragments and their activity 출처 : https://towardsdev.com/state-of-the-art-communication-between-fragments-and-their-activity-daa1fe4e014d Android single-activity screen 의 아키텍처 구조 오늘날 현대적인 기본 Android 앱의 개발은 single-activity 아키텍처를 기반으로 하는 경향이 있습니다. 이는 부모로서의 single activity 가 하나 이상의 fragment 를 자식으로 가질 수 있음을 의미합니다. 이벤트 또는 탐색 내에서 fragment 만 교체되므로 원래 상위 activity 가 계속 컨테이너로 작동합니다. 계층적으로 보면 자식 fragment 자체에 자식 fragment 가 있을 수 있습니다. f.. 더보기
Understand Android Lifecycle Aware Coroutine Scope Made Easy 출처 : https://medium.com/mobile-app-development-publication/understand-android-lifecycle-aware-coroutine-scope-made-easy-f86d13d16f0e Kotlin Coroutine을 사용하려면 적절한 scope 를 정의해야 합니다. 까다로운 부분은 생성하고 중지하는 것을 기억해야 한다는 것입니다. 이를 고려하여 Google Android 개발 팀은 수명 주기를 인식하는 몇 가지 Coroutine scope 를 제공했습니다. 예제에서 Activity에 lifecycleScope를 사용하면 Fragment에 viewLifecycleOwner.lifecycleScope가 사용됩니다. Fragment 체크아웃에 대해 구체적으.. 더보기
Enum vs Sealed class — which one to choose? 출처 : https://blog.kotlin-academy.com/enum-vs-sealed-class-which-one-to-choose-dc92ce7a4df5 Enum vs Sealed class — which one to choose? TL;DR: Enums have supporting functions like valueOf, values or enumValues what makes them easier to iterate over or serialize. Just like… blog.kotlin-academy.com TL;DR : Enum 에는 valueOf, values 또는 enumValues와 같은 지원 기능이 있어 반복하거나 직렬화하기가 더 쉽습니다. 클래스와 마찬가지로 사용자 정의 메소.. 더보기
Avoid Using “when” Expression as Much as Possible. Use Polymorphism Instead 출처 : https://medium.com/better-programming/avoid-using-when-expression-as-much-as-possible-use-polymorphism-instead-890b92389060 When 문은 종종 smell code 로 간주되어 피해야만 합니다. 5개의 미리 정의된 크기로 개발해야 하는 Button 5개가 있다고 가정해 보겠습니다. small (height = 16dp) medium (height = 24dp) large (height = 32dp) huge (height = 40dp) custom sealed class ButtonSize { object Small : ButtonSize() object Medium : ButtonSize() obj.. 더보기
Android animation 을 쓸 때 어떤 Animation 을 써야 할까? https://www.crocus.co.kr/1690 [Android] 언제 어떤 Animator를 사용할 것인가? Animation in Android 안드로이드 프로그래밍을 하다 보면 초라한 UI를 제공하지 않기 위해 애니메이션을 추가하여 좀 더 고급스러운 App을 만들어 내고자 한다. 이때 Animation을 쓰다보면 여러가지 많은 www.crocus.co.kr 에 대해서 잘 정리된 블로그 더보기
Android SNS 로그인 시 Locale Change 이슈 Android 7.0 이상에서 분명 Locale 을 영어나 글로벌 언어로 해놓았는데, WebView 를 거치거나 chrome tab 을 이용하는 library 를 사용하게 되면 Locale 이 변경 되는 이슈가 있다. 해당 library 에서 변경하는 내부코드 부분을 찾아보려 했으나 찾지 못하였다. DateTimeFormatter public static DateTimeFormatter ofPattern(String pattern) { return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter(); } public DateTimeFormatter toFormatter() { return toFormatter(Locale.getDefa.. 더보기
async and await launch() 함수는 코루틴 종료를 기다리거나 취소하는 데 사용할 수 있는 Job 객체를 반환합니다. 그러나 launch()를 사용하여 시작된 코루틴에서 결과를 반환할 방법이 없습니다. 작업을 비동기적으로 실행하고 응답을 받으려면 launch() 대신 async()를 사용하십시오. async() 함수는 launch()와 동일한 매개변수를 사용하므로 동일한 방식으로 async() 및 launch()를 사용하여 생성된 코루틴의 context 및 start 속성을 구성할 수 있습니다. 그러나 차이점은 async()가 다른 메서드 중에서 코루틴, 취소 등의 상태를 확인하기 위해 await() 메서드가 있는 Deferred future 객체를 반환한다는 것입니다. wait() 호출은 실행 흐름을 차단하지만 실행.. 더보기
ConcurrentLinkedQueue 출처 : https://juejin.cn/post/6844903906288336909 소스 코드를 읽고 실행 과정에 따라 분석하기 전에 결론을 내립니다. tail은 반드시 대상의 진정한 끝점을 가리키지 않는다., 우리는 분석 후에 이 기능을 찾을 것입니다. private static void checkNotNull(Object v) { if (v == null) throw new NullPointerException(); } public boolean offer(E e) { //(1)e가 null인 경우 null 포인터 예외를 던집니다. checkNotNull(e); //(2)새 Node 노드를 생성하면 Unsafe 클래스의 putObject 메소드가 Node 생성자에서 호출됩니다. final Node .. 더보기

728x90
반응형