728x90
반응형

CS/Android 18

Coroutine (2)

2024.12.17 - [CS/Android] - Coroutine (1) Coroutine (1)ㅇ coroutine이란?- 실행을 일시 중단(suspend)/다시 실행(resume) 시킬 수 있는 기술- 비동기 프로그래밍을 위해 사용되기 때문에, 개념적으로는 일종의 경량 스레드(light-weight thread)로 볼 수 있지만, 특jyejye311.tistory.com(1)에서는 coroutine이 무엇인지, coroutine을 어떻게 실행할 수 있는지 공부했다. coroutine은 JVM thread에 비해 메모리 소요가 적어 가볍기 때문에 선호되는 사용 방식이다.import kotlinx.coroutines.*fun main() = runBlocking { repeat(50_000) { ..

CS/Android 2024.12.24

Coroutine (1)

ㅇ coroutine이란?- 실행을 일시 중단(suspend)/다시 실행(resume) 시킬 수 있는 기술- 비동기 프로그래밍을 위해 사용되기 때문에, 개념적으로는 일종의 경량 스레드(light-weight thread)로 볼 수 있지만, 특정 thread에 종속되지 않기 때문에 실질적으로는 매우 다름- 안드로이드 개발에서는 UI thread는 유지하면서 네트워크 호출, 파일 입출력, DB 작업 등의 비동기 작업을 효율적으로 처리하기 위해 많이 사용 ㅇ coroutine의 장점1. 비동기 작업 처리- 시간이 많이 걸리는 비동기 작업을 메인 thread와 별도 thread에서 처리하여 효율적- main thread에서 사용할 경우 ANR(Application Not Responding)이 발생할 수 있다...

CS/Android 2024.12.17

공통 객체 이용하기 - CompositionLocal

navigation 관련해서 코드를 분석하던 중, 공통 객체를 이용할 수 있도록 하는 로직이 있어 기록하게 되었다. CompositionLocalcomposable 사이에 특정 데이터나 객체를 전역 state처럼 두고 사용할 수 있는 방법이 있는데, 바로 "CompositionLocal"을 이용한 방법이다.CompositionLocal은 compose에서 계층적으로 데이터를 전달하는 방법을 의미한다.이 객체를 설정하면 하위 composable들은 자유롭게 이 객체의 정보에 접근할 수 있다. navController를 예시로 들어, 아래와 같은 코드가 있다고 하자.val navController = rememberNavController()CompositionLocalProvider(navControlle..

CS/Android 2024.12.17

Navigation

Android Navigation : 앱 내에서 화면 전환과 workflow를 관리하기 위한 시스템Android jetpack의 Navigation Component : 앱의 navigation 구조를 정의, 구현하기 쉽도록 화면 이동, 백 스택 관리, 딥 링크 처리 등의 다양한 기능을 제공하는 도구 주요 요소ㅇ NavHost화면 전환이 이루어지는 컨테이너.NavHostFragment나 NavHost Composable을 사용해 Fragment나 Compose 기반으로 설정 가능ex)NavHost(navController = navController, startDestination = "home") { composable("home") { ... } composable("details") { ..

CS/Android 2024.12.16

Composable & Preview

composejetpack compose란?native Android UI를 만들기 위한 toolkit선언적으로 구성되어, XML layout이나 Layout Editor 없이 간단하게 UI component를 만들 수 있음composable 함수로 정의하면, compose 컴파일러가 그 작업이 동작하도록 만들어줌Composable functioncompose를 구성하는 함수들앱이 보이는 방식이나 데이터 사이의 dependency 등에 집중@composable annotation만 붙이면 사용 가능ex1)Text composable function - Compose UI library에 정의import android.os.Bundleimport androidx.activity.ComponentActivi..

CS/Android 2024.12.13

Ktlint vs Detekt vs Android Lint

ktlint, detekt, android lint 비교특징ktlintdetektandroid lint목적kotlin 코드 스타일 검사 및 포맷팅kotlin 코드 정적 분석 및 품질 개선android 프로젝트 전반 문제 탐지포맷팅 지원지원(자동 수정 가능)지원x지원x정적 분석지원x코드 복잡성, 코드 smell 등 감지android 관련 문제 탐지결과 출력texthtml, xml 등 출력 가능android studio ui에서 확인 가능설정 난이도쉬움어려움기본 내장예시fun greet() :String {   return "Hello, World!"}fun greet(): String {    return "Hello, World!"}=> kotlin 코드 스타일 가이드에 맞게 수정fun calculate..

CS/Android 2024.12.13

DATA BINDING

data binding이란?데이터 값이 직접 UI에 관여하는 방식을 의미한다. 예제예제로 버튼을 누르면 화면의 value가 1씩 증가하는 counter를 만들어 보았다. (챗지피티의 도움으로..)(회사에서 쓰고 있는 거라서 에뮬레이터의 device가 차량용인건 무시하면 된다..)\  위의 두 그림처럼, counter 값이 0에서 시작해 Increase 버튼을 누르면 1씩 증가하는 예제이다. 1. data binding을 사용하지 않은 경우더보기import android.os.Bundleimport androidx.activity.ComponentActivityimport androidx.activity.compose.setContentimport androidx.compose.foundation.layo..

CS/Android 2024.12.13

MVC 패턴 vs MVP 패턴 vs MVVM 패턴

디자인 패턴은 개발 및 유지보수를 좀더 체계적이고, 효율적으로 하기 위한 방법론이다.그 중에서도 MVC 패턴이 굉장히 유명한데, UI와 비즈니스 로직을 분리하기 위해 만들어진 패턴이다.그러나 이 패턴에도 문제점이 있었고, 그걸 해결하기 위해 MVP를 거쳐 현재는 MVVM으로 파생되었다.각각이 장단점이 있어 맞는 방법론을 찾아 사용하는 것이 좋다.현재 android 앱개발 쪽에서는 MVVM을 선호하는데, 흐름을 보면 그 이유를 알 수 있다.MVC 패턴Model + View + Controller 로 역할을 나누어 코드를 관리하는 패턴목적 : UI와 데이터/비즈니스 로직을 분리하여 개발, 테스트 및 유지보수를 쉽게 하는 것구조Model : 데이터 처리View : UIController : 사용자의 입력을 처..

CS/Android 2024.12.13
728x90
반응형