본문 바로가기

전체 글

(62)
Compose 성능 최적화 (Donut hole, 도넛홀) https://developer.android.com/jetpack/compose/performance/bestpractices?hl=ko#defer-reads 권장사항 준수 | Jetpack Compose | Android Developers 권장사항 준수 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 발생할 수 있는 일반적인 Compose 실수가 몇 가지 있습니다. 이러한 실수로 인해 코드가 잘 실행 developer.android.com 안드로이드 디벨로퍼 가이드에서 가장 중요한 개념은 "읽기 연기" 라고 보여집니다. 성능 최적화를 하려면 리컴포지션(recomposition)을 최소화 해야합니다. Composition Scope 안에서 Stable 한 변수가 있으면 ..
CoroutineScope 의 cancel() 전파 Scope의 자식 Scope 에서 Exception 이 났을 때 동작 아무런 처리도 하지않았을 때 CoroutineScope(Dispatchers.IO).launch { launch(CoroutineName("child1")){ delay(1000) Log.d("dayun","${this} end") }.invokeOnCompletion { Log.d("dayun","child1 throwable = $it") } launch(CoroutineName("child2")){ throw Exception("test") }.invokeOnCompletion { throwable -> Log.d("dayun","child2 throwable = $throwable") } delay(1000) Log.d("day..
Android의 Touch Event 전달 앱 개발 시 View 에 onTouchEvent나 onClickListener 를 통한 onClick() 을 사용하며 터치와 클릭에 대한 처리를 했을 텐데요. Nested Scroll 을 커스텀하게 사용하기 위해서는 두 가지 만으로 부족할 때가 있습니다. 따라서 안드로이드의 Touch Event 가 어떻게 전달되고 처리되는지 이해할 필요가 있습니다. Touch Event 전달 순서 Touch Event 가 발생하면 모든 이벤트 발생 알림의 시작점은 액티비티 부터 시작됩니다. Activity -> ViewGroup A -> ViewGroup B ->View 순으로 전달됩니다. onInterceptTouchEvent() 함수를 override 하여 true 로 리턴하면 해당 뷰 그룹에서 더 이상 자식 뷰에게..
Android 인터뷰 20선 - 2 https://medium.com/@yogitavarsani/top-20-android-interview-question-for-beginners-94e734c62920 Top 20 Android Interview Question For Beginners . 1. What is the life cycle of Android activity? medium.com 11. 애플리케이션 크래쉬 오류가 자주날때 문제를 해결할 수 있는 기술은 무엇입니까? (what are the troubleshooting techniques you can follow if an application is crashing frequently?) 호환성 체크: 애플리케이션이 OS 와 호환되지 않을 가능성이 있습니다. 메모리 관리: ..
안드로이드 인터뷰 면접 질문 20선! - 1 https://medium.com/@yogitavarsani/top-20-android-interview-question-for-beginners-94e734c62920 Top 20 Android Interview Question For Beginners . 1. What is the life cycle of Android activity? medium.com 위 내용을 기반으로 작성한 내용입니다~ 1. Android Activity 라이프 싸이클에 대해서 설명해주세요. onCreate() 액티비티가 생성될 때 호출된다. 액티비티 전체 수명 주기 동안 딱 한 번만 동작되는 초기화 및 시작 로직을 실행할 수 있다. savedInstanceState를 통해 이전 상태가 저장된 Bundle 객체를 얻을 수 있..
Android, Compose 왜 생겼을까? 오늘은 Android Compose 가 왜 생겼는지에 대해서 이야기 해보겠습니다. Compose 를 만들 수 밖에 없었던 이유에 대해서 말씀드리기 전에 리스코프 치환 원칙을 알고 계시나요? 리스코프 치환 원칙 자식클래스(서브클래스)는 부모클래스(슈퍼클래스)의 역할을 완벽히 수행할 수 있어야한다. 상속받은 클래스는 부모클래스가 하는 일을 완벽히 이해를 해야합니다. 그래서 "상속 보다는 구성을 사용하라" 는 배움의 말이 나오죠~ View 안드로이드 UI 가장 기본클래스는 View 입니다. View에는 안드로이드가 10년 이상동안 OS가 유지되면서, 다양한 단말들의 예외처리들이 다 포함되어있습니다. View의 개행수를 찾아보면 31111줄이나 됩니다. 즉, 커스텀뷰를 만들기 위해서는 31111 라인의 내용을 ..
AttributeSet Android XML에서 View를 생성할 때 값을 설정할 수 있는 AttributeSet 인터페이스를 제공합니다. AttributeSet을 통해 View를 생성하면 기본 값을 쉽게 설정할 수 있습니다. attr.xml 에 선언하여 만들 수 있습니다. 이렇게 받아서 사용할 수 있습니다. context.theme.obtainStyledAttributes(attrs, R.styleable.ProgressView, defStyleAttr, defStyleRes).apply { maxValue = getInt(R.styleable.ProgressView_maxValue, maxValue) value = getInt(R.styleable.ProgressView_value, value) textSize = getD..
안드로이드 수동 종속성 삽입 기능을 모듈로 분할하여 개발을 확장하는 방법에 대해 소개하고 있는 글입니다. 수동 종속성 삽입 https://developer.android.com/training/dependency-injection/manual 수동 종속성 삽입 | Android 개발자 | Android Developers 수동 종속성 삽입 Android의 권장 앱 아키텍처는 코드를 클래스로 분할하여 관심사 분리의 이점을 누리길 권장합니다. 관심사 분리는 정의된 단일 책임이 계층 구조의 각 클래스에 있는 원칙입니 developer.android.com 일반적인 안드로이드 앱 로그인 플로우 대해서 설명하며 다루겠습니다. class UserRepository( private val localDataSource: UserLocalDataS..