개발 23

[Android] Coroutine(기초)

비동기 처리는 프로그래밍을 하는데 있어서 굉장히 중요한 요소입니다. 우리는 서버 작업등을 할 때 백스레드와 같이 스레드를 하나 더 만들어 비동기 처리를 합니다. 네트워크 통신과 같은 시간이 오래걸리는 작업을 할 때 UI가 멈추면 안되기 때문에 비동기로 네트워크 통신과 앱 동작을 구현합니다. 구글에서는 비동기처리를 함에 있어서 코루틴 사용을 굉장히 중요시합니다. 코루틴은 CO 루틴으로 협동 루틴이라는 뜻입니다. 코루틴의 장점으로는 다음과 같습니다. 메모리 사용량이 적어서 대규모 데이터 처리에도 유용합니다. 스레드와 달리 컨텍스트 스위칭 오버헤드가 적어서 빠른 성능을 보장합니다. 코드 가독성이 좋아서 유지보수가 용이합니다. import kotlinx.coroutines.* fun main() { printl..

[Android] Utility

코드를 작성하다보면 가끔 프로그램 전반에 걸쳐서 사용되거나 자주 필요한 기능, 데이터가 있을 수 있습니다. 그런 기능이나 데이터들을 클래스 또는 함수로 만들면 자주 이용하게 됩니다. 그래서 Util이라는 패키지를 따로 만들어서 관리하기도 합니다. 예를들어 어떤 앱이 있다고 가정하고, 그 앱은 한 페이지가 중심이 되어있고, 항상 버튼 클릭 한번으로 그 페이지로 이동할 수 있어야 한다면 그 페이지로 이동하는 함수나, 그 페이지로 이동하기 위한 함수들을 모아놓은 클래스 등을 Util로 관리 할 수 있습니다. 예를들어 package com.BravenessOfDonut.android.util class GoToThePageUtil { val ThePage = TheActivity() // 항상 이용하는 액티비티..

[Android] Android Weekly

https://androidweekly.net/ Android Weekly - Free weekly Android & Kotlin development newsletter Android Weekly - Free weekly Android & Kotlin development newsletter androidweekly.net 앞으로 도움이 될만한 정보가 많은 것 같습니다.... 구독을 하고 이메일을 적으면 메일로 1주에 한번 최신 안드로이드 뉴스를 보내준다고 합니다. 게다가 무료로... 최신 정보를 아직 활용할만한 실력은 안되지만 계속 최신 뉴스를 따라가며 길을 잡아가는 것도 좋아보입니다. 흥미로운 내용들도 많이 올라오니 한번씩 들어가서 확인해주는 것이 좋을 것 같습니다.

[Android] 모듈화로 빌드시간을 줄인다?

개발을 하며 빌드를 하는 시간은 우리를 굉장히 피로하게 하는 경우가 많습니다. 코드가 커지면 커질수록 그런 경향이 많은데요. 그러한 피로가 개발을 하는데 있어 굉장히 많이 일의 능률을 낮추기 때문에, 빌드시간을 줄이는 것은 생각보다 중요한 경우가 많습니다. 이전에 모듈에 대해서 이야기를 하다가 모듈화가 빌드 시간을 줄여주는데 좋다는 이야기를 들었습니다. 그래서 오늘은 모듈이 빌드 시간을 어떻게 줄여주는지 알아보기로 하였습니다. 우리는 빌드를 할 때 빌드 캐시를 활용합니다. 캐시를 이용해 이전에 사용한 빌드 정보들을 빠르게 캐싱해 처음 빌드를 할 때 보다 더욱 빠르게 빌드를 마칩니다. 개발자가 코드를 고치면 그 코드를 다시 컴파일 해야합니다. 라이브러리가 추가되어 종속성 관리가 다시 필요할 수도 있습니다...

[Design Pattern] Factory 패턴

Factory 패턴은 객체 생성을 캡슐화하는 디자인 패턴입니다. 이 패턴은 객체 생성 로직을 클라이언트 코드에서 분리하여, 요청에 따라 다양한 객체를 생성할 수 있게 합니다. Factory 패턴은 주로 다음과 같은 상황에서 사용됩니다: 생성할 객체의 타입이 런타임에 결정되는 경우 객체 생성과 관련된 로직을 한 곳에서 관리하고 싶은 경우 객체 생성에 필요한 데이터가 복잡한 경우 코틀린에서 Factory 패턴을 구현하는 예제를 들어보겠습니다. 먼저, 생성할 객체의 공통 인터페이스를 정의합니다. interface Animal { fun speak() } 다음으로, 인터페이스를 구현하는 여러 클래스를 정의합니다. class Dog : Animal { override fun speak() { println("Wo..

[Design Pattern] Builder 패턴

Builder 패턴은 객체 생성 과정을 단계별로 나누어, 사용자가 원하는 방식으로 객체를 생성할 수 있게 하는 디자인 패턴입니다. 주로 복잡한 객체를 생성할 때 유용하며, 가독성과 유연성을 높여줍니다. 코틀린에서는 Builder 패턴을 다음과 같이 구현할 수 있습니다. 먼저, 생성할 객체를 나타내는 클래스를 정의합니다. 예를 들어, Car 클래스를 정의해 보겠습니다. data class Car( val brand: String, val model: String, val year: Int, val color: String, val price: Double ) 이제 Builder 클래스를 정의합니다. Builder 클래스는 Car 객체를 생성하기 위한 중간 단계 역할을 합니다. class CarBuilder..

[Design Pattern] Adapter 패턴

어댑터 패턴은 기존의 클래스 인터페이스를 클라이언트가 원하는 다른 인터페이스로 변환하는 패턴입니다. 예를 들어, 이미 만들어져 있는 한 클래스의 메소드를 다른 클래스에서 사용하고 싶을 때 어댑터 패턴을 사용할 수 있습니다. interface MediaPlayer { fun play(audioType: String, fileName: String) } interface AdvancedMediaPlayer { fun playVlc(fileName: String) fun playMp4(fileName: String) } class VlcPlayer : AdvancedMediaPlayer { override fun playVlc(fileName: String) { println("Playing vlc file...

[Design Pattern] MVVM 아키텍처 패턴

이 글에서는 안드로이드 애플리케이션을 개발할 때 사용되는 현대적인 아키텍처 패턴 중 하나인 MVVM(Model-View-ViewModel) 패턴에 대해 알아보겠습니다. 목차 1. 소개 2. MVC와 MVP 패턴의 한계 3. MVVM 패턴 이해하기 4. MVVM 구성 요소 5. MVVM 장점 1. 소개 안드로이드 애플리케이션 개발을 위한 아키텍처 패턴 중 하나인 MVVM(Model-View-ViewModel) 패턴은 애플리케이션의 유지 보수성, 확장성 및 테스트 용이성을 향상시키는 데 도움이 됩니다. 이 글에서는 MVVM 패턴의 기본 개념과 구성 요소, 장점에 대해 알아보고 간단한 예제를 통해 실제로 어떻게 작동하는지 살펴보겠습니다. 2. MVC와 MVP 패턴의 한계 전통적인 아키텍처 패턴인 MVC(Mod..

[Android] 앱 시작 Activity 변경

1. 개요 2. 방법 1. 개요 Android 개발을 하면, 보통 가장 먼저 시작되는 Activity는 Main액티비티로 기본 설정됩니다. 하지만, 만약 우리가 개발하는 앱이 로그인 기능을 지원하고, 그 로그인 기능을 위한 Activity가 있다면(LoginActivity) MainActivity가 아닌 LoginActivity가 가장 먼저 실행되는 것이 개발에 유리할 것입니다. 그렇다면 어떻게 시작Activity를 변경 할 수 있을까요? 2. 방법 Activity는 AndroidManifest에서 관리됩니다. 시작 Activity도 매니페스트에서 변경할 수 있습니다. 보통 매니페스트는 기본적으로 위와 비슷한 형태로 되어있을 것입니다. 저기서 MainAcitivity와 LoginActivity의 위치만 ..

[Android] ViewPager2, Fragment

(개발중에 쓸일이 있어서 썼다가 간단히 메모하고 싶어서 올리는 글... 코드 대충 손보고 쓰는거라 오류 있을 수 있음) 목차 1. 개요 2. 뷰페이저 3. 사용법 1. 개요 https://developer.android.com/jetpack/androidx/releases/viewpager2?hl=ko#androidx-deps ViewPager2 | Android 개발자 | Android Developers 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 스와이프할 수 있는 형식으로 뷰 또는 프래그먼트를 표시합니다. 최근 업데이트 공개 버전 출시 후보 베타 developer.android.com 뷰페이저는 리스트뷰나 리사이클러뷰와는 달리 리스트로 항목들을 보여주는 것이 아닌..