Apple is Apple
2024-01-26
TIL 2024. 1. 26. 22:07

DI (Dependency Injection) DI(dependency injection)는 프로그래밍에 널리 사용되는 기술이며 Android 개발에 매우 ​​적합하다. DI 원칙을 따르면 좋은 앱 아키텍처의 토대를 마련할 수 있다. 종속성 주입을 구현하면 다음과 같은 이점이 있다. 코드 재사용성 리팩토링이 용이 테스트 용이성 먼저, 앱 수준 gradle에 플러그인을 추가 plugins { id 'com.android.application' id 'kotlin-android' // dagger를 위한 plugin id 'kotlin-android-extensions' // 어노테이션을 통해 컴파일 타임에 코드 생성을 도와줌 id 'kotlin-kapt' } 그 후, dagger 라이브러리를 추가 depe..

article thumbnail
2024-01-18
TIL 2024. 1. 18. 21:11

Paging basic 사용자에게 정보를 표시하는 가장 일반적인 방법 중 하나는 리스트(안드로이드에선 리사이클러뷰나 리스트 뷰등이 있을 것이다.)를 사용하는 것이다. 그러나 때때로 이러한 목록은 전체 콘텐츠로 통하는 작은 창에 불과다. 사용자는 제공되는 정보를 스크롤할 때, 하단에 더 많은 데이터가 있을 것이라고 예상하는 경우가 많다. 데이터를 가져올 때 효율적이고 원활하게 진행되어 계속 늘어나는 로드가 사용자 환경을 저해하지 않아야한다. (사용자 경험) -> 한 번에 로딩 X 그러므로 점진적인 로딩은 성능 향상에도 도움이 된다. 앱에서 많은 양의 데이터를 한 번에 메모리에 저장할 필요가 없기 때문이다. 정보를 점진적으로 가져오는 이 프로세스를 페이징이라하며 각 페이지는 가져올 데이터 청크에 대응한다. ..

article thumbnail
2024-01-16
TIL 2024. 1. 16. 15:57

앱 모듈화 개요 단일 Gradle이 아닌, 여려 Gradle 모듈이 있는 프로젝트를 다중 모듈 프로젝트라고 한다. (모듈화의 결과) 배경 - 증가하는 코드의 문제 프로젝트가 진행되면서 코드베이스가 계속 증가하게 되는데, 시간이 지남에 따라 확장성, 가독성 및 전반적인 품질이 떨어지는 경우가 많다. 모듈화는 유지 관리 가능성을 개선하고 이런 문제를 방지할 수 있는 방식으로 코드베이스를 구조화 하는 방법이다. 모듈화란? 모듈화는 코드베이스를 느슨하게 결합된 독립적인 부분으로 구성하는 방법이다. 각 모듈은 독립적이며 명확한 역할을 한다. 하위 문제를 해결하기 위해 문제를 더 작고 쉬운 문제로 나누면 대형 시스템 설계와 유지보수의 복잡성이 줄어들게 된다. 모듈화의 장점 재사용성 - 모듈화를 사용하면 코드를 공유..

2024-01-12
TIL 2024. 1. 13. 16:01

package com.example.compose.rally import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.padding import androidx.compose.material.Scaffold import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtim..

2023-12-28
TIL 2023. 12. 28. 20:22

Compose Basic 1. Compose Jetpack Compose는 UI 개발을 간소화하기 위해 설계된 최신 툴킷입니다. 반응형 프로그래밍 모델을 Kotlin 프로그래밍 언어의 간결함 및 사용 편의성과 결합합니다. 이는 완전히 선언적인 접근 방식으로, 데이터를 UI 계층 구조로 변환하는 일련의 함수를 호출하여 UI를 설명합니다. 기본 데이터가 변경되면 프레임워크가 이러한 함수를 자동으로 다시 실행하여 UI 계층 구조를 업데이트합니다. compose ui를 사용하려면 Composable 어노테이션을 선언해야함 @Composable은 클래스단위에는 붙일 수 없고, 함수 단위에 붙일 수 있음 @Composable을 붙어야 Text 같이 선언형 UI를 구현할 수 있음 2. Recomposition Rec..

2023-12-22
TIL 2023. 12. 23. 21:19

package com.codelab.codelab_prac_1 import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.u..

2023-12-19
TIL 2023. 12. 19. 20:58

context 직역을 해보자면 맥락 의미한다. 안드로이드에서의 Context 도 얼추 비슷한 느낌이다. 어플리케이션에 대해서 현재 상태를 나타내는 역할을 하는데, 앱이 흘러가는 맥락 정도로 해석해 볼 수 있다. 현재 애플리케이션의 상태를 갖고 있으며, 안드로이드 시스템 서비스에서 제공하는 API(리소스, sharedPreference 등)에 접근하기 위해 사용한다. 크게 2가지로 분류 된다. Application Context 어플리케이션 전체 라이프사이클에 묶여 있는 context이다. 현재 context가 종료되고 나서도 context가 필요한 작업이나, 액티비티 범위를 벗어난 곳에 context가 필요한 작업에 적합니다. Activity Context액티비티 스코프 내에서 사용될 때 넘겨주거나, 액..

2023-12-11
TIL 2023. 12. 11. 14:51

Architecture 아키텍쳐를 사용하는 이유 일관적인 코드작성 (유지보수, 협업 능률 상승) 생산성 향상 테스트의 용이성 어플리케이션의 개발 방향성을 잡아줌 (동일한 목표) 아키텍쳐의 종류 MVC: model + view + controlller MVP: model + view(viewController) + presenter MVVM: model + view(viewController) + viewmodel MVVM + DataBinding MVI: model + view + intent MvRx(framework-airbnb), Flux(framework-facebook), Ribs, etc.... MVP architecture mvp 아키텍쳐 view - presenter - model 로 분리..

2023-12-06
TIL 2023. 12. 6. 20:32

in 키워드 (GENERIC) in 키워드에 대해 알려면 먼저 제네릭에 대해 알아야한다. 제네릭이란? 제네릭은 클래스 내부에서 사용할 자료형을 나중에 인스턴스를 생성할 때 확정한다. 제네릭이 나오게 된 배경은 자료형의 객체들을 다루는 메소드나 클래스에서 컴파일 시간에 자료형을 검사해 적당한 자료형을 선택할 수 있도록 하기 위해서 등장하였다. 제네릭을 사용하면 객체의 자료형을 컴파일 시에 체크하기 때문에 객체 자료형의 안정성을 높이고 형 변환의 번거로움이 줄어든다. 제네릭을 사용하기 위해 앵글 브래킷() 사이에 형식 매개변수를 사용해 선언하고 매개변수는 하나 이상 지정할 수 있다. 제네릭에는 가변성이란 것이 있는데 가변성이란 매개변수가 클래스 계층에 영향을 주는 것을 뜻한다. 가변성에는 공변성, 반공변성,..

2023-12-04
TIL 2023. 12. 4. 22:14

constraint layout란?, 다른 레이아웃과 비교해서 장점은? ConstraintLayout은 각 요소를 부모나 다른 요소에 상대적으로 배치하는데 사용되는 제약 조건을 활용한다. 이는 정확한 위치 지정을 통해 UI를 세밀하게 제어할 수 있게 해준다. 이로써 발생하는 장점에는 다음과 같은 것들을 생각해볼 수 있다. 유연성 및 성능 개선- 다양한 화면 크기와 해상도에 대해 유연하게 대응할 수 있다. 이는 앱이 다양한 디바이스에서 일관된 모양을 유지하면서도, 더 나은 성능을 제공할 수 있도록 도와준다. 간결한 계층 구조 - 기존의 다른 레이아웃과 비교해서 계층 구조가 더 간결합니다. 계층 구조가 단순해지면서 레이아웃의 계산이 빨라지고 메모리 사용이 효율적으로 개선된다. 레이아웃 중첩 최소화 - 중첩된..