본문 바로가기

안드로이드

(27)
Play Feature Delivery - 앱 크기 최적화의 열쇠 안녕하세요! 앱 개발하면서 앱 크기 때문에 고민한 적 있으신가요? 🤔 기능은 계속 추가되는데 앱 용량이 자꾸 늘어나면 사용자들도 부담스러워하고, 설치까지 가는 길에 포기하기도 하죠. Google Play에서는 이런 우리들의 고민을 해결해주려고 멋진 도구들을 만들어줬어요! 바로 Android App Bundle 기반의 Play Feature Delivery랍니다.Play Feature Delivery는 뭐냐면요, 쉽게 말해 우리 앱의 기능들을 '기능 모듈'이라는 작은 조각으로 나눠서, 사용자 폰에 딱 필요한 것만 골라서 다운받게 해주는 거예요. 덕분에 처음 앱을 깔 때 다운로드 용량을 엄청나게 줄일 수 있죠!이 '기능 모듈'은 앱의 기본 모듈이랑 비슷하게 생겼지만, 꼭 기본 모듈에 붙어 다녀야 해요. 사..
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 한 변수가 있으면 ..
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..