728x90
반응형

2025/02 48

25. 아키텍처의 이해 (MVC, MVP, MVVM, Clean)

MVC (Model-View-Controller)Model데이터와 비즈니스 로직을 담당데이터베이스나 API와 상호작용하며 데이터의 상태를 관리View사용자 인터페이스(UI)를 담당사용자와 상호작용하며 데이터를 표시ControllerModel과 View를 연결사용자의 입력을 받아 Model에 전달하고, Model의 변경사항을 View에 반영 안드로이드에서ViewXML 레이아웃 파일 (UI 정의)Model데이터 클래스, 비즈니스 로직 (예: 데이터베이스, 네트워크 호출)ControllerActivity 또는 Fragment가 View와 Model을 연결하는 역할을 담당 단점Activity/Fragment가 Controller와 View 역할을 모두 담당하기 때문에 비대해지는 문제(God Object)가 발생..

24. Thread와 Handler (AsyncTask, RxJava, Coroutine, Handler)

스레드 (Thread)Android 앱은 기본적으로 싱글 스레드 모델에서 실행된다.메인 스레드(UI 스레드)는 사용자 인터페이스(UI)와 관련된 작업을 담당하며, 긴 작업(예: 네트워크 요청, 데이터베이스 작업)을 메인 스레드에서 실행하면 ANR(Application Not Responding) 오류가 발생할 수 있다.이를 방지하기 위해, 긴 작업은 백그라운드 스레드에서 실행해야 한다.핸들러 (Handler)핸들러는 스레드 간 통신을 가능하게 하는 도구백그라운드 스레드에서 메인 스레드(UI 스레드)로 메시지를 전달하거나 작업을 예약하는 데 사용된다.메인 스레드에서 생성된 핸들러는 백그라운드 스레드로부터 받은 메시지를 UI에 반영할 수 있다.AsyncTaskAsyncTask는 Android에서 백그라운드 ..

23. 네트워크 통신 활용 (Retrofit)

네트워크 요청 및 JSON 데이터 처리네트워크 통신은 Android 애플리케이션에서 외부 API 서버와 데이터를 주고받는 과정 네트워크 요청 단계요청(Request)클라이언트(앱)에서 HTTP 요청(GET, POST 등)을 서버에 보낸다.요청 URL은 API 엔드포인트로 지정되며, 필요한 매개변수(쿼리, 경로 등)가 포함된다.응답(Response)서버는 요청을 처리하고 JSON 형식의 데이터를 클라이언트에 반환한다.클라이언트는 JSON 데이터를 파싱 하여 사용할 수 있는 객체 형태로 변환된다.Retrofit 라이브러리를 사용한 네트워크 요청 Retrofit이란?Retrofit은 Square에서 제공하는 Android 네트워크 라이브러리로, RESTful API와 통신을 쉽게 구현할 수 있도록 도운다. 특..

ViewModel이란?

ViewModelAndroid Jetpack의 아키텍처 컴포넌트 중 하나UI 데이터를 관리하고 저장하기 위해 설계된 클래스ViewModel은 Activity나 Fragment의 생명 주기를 고려하여 데이터를 효과적으로 관리할 수 있게 해준다.화면 회전과 같은 이벤트로 인해 Activity/Fragment가 재생성되더라도 데이터를 유지하고, 불필요한 네트워크 호출이나 데이터 처리 방지 주요 특징UI 생명 주기 인식ViewModel은 UI 컨트롤러(Activity/Fragment)와 연결되어 있으며, UI 생명 주기를 알고있다.UI가 destroy되기 전까지 메모리에 데이터를 유지한다.화면 회전, 구성 변경 등으로 인해 Activity/Fragment가 재생성될 때 데이터를 다시 초기화하지 않아도 된다.UI..

8. 날씨 아이콘 바꾸기

먼저 날씨 정보를 표시하기 위해 사용할 수 있는 데이터에 대해 정리해보려고 한다. 초단기실황(getUltraSrtNcst)실시간 날씨 데이터 (매 시간마다 업데이트)항목 코드(category)설명단위T1H기온°CRN11시간 강수량mmUUU동서바람성분m/sVVV남북바람성분m/sREH습도%PTY강수 형태코드(0~4)VEC풍향°WSD풍속m/s 초단기예보(getUltraSrtFcst)단기 예보 데이터(30분 간격 업데이트, 향후 6시간 치 데이터)항목 코드(category)설명단위T1H기온°CRN11시간 강수량mmSKY하늘 상태코드(1~4)UUU동서바람성분m/sVVV남북바람성분m/sREH습도%PTY강수 형태코드(0~4)LGT낙뢰kA(킬로암페어)VEC풍향°WSD풍속m/s날씨아이콘 표시를 위해 활용할 수 있는 정보..

7. UI 업데이트 기능 분리 및 날씨 계산 유틸 분리 (중간정리)

LocationManagerLocationManager의 기능을 분리하여 모듈성을 개선하려고 한다.class LocationManager(private val activity: AppCompatActivity, private val textView: TextView) { private val fusedLocationClient = LocationServices.getFusedLocationProviderClient(activity) //FusedLocationProviderClient: 위치 서비스 초기화 //위치 권한 확인 fun checkLocationPermission(): Boolean { return ActivityCompat.checkSelfPermission( ..

lifecycleScope란?

lifecycleScopeAndroid Lifecycle KTX 라이브러리에서 제공하는 코루틴 스코프Activity 또는 Fragment의 생명주기를 따른다 사용하는 이유Android에서 Activity 또는 Fragment가 파괴되면, 해당 컴포넌트와 관련된 모든 작업도 중단되어야 한다일반적으로 실행중인 코루틴은 생명 주기를 따르지 않으므로 메모리 누수가 발생할 수 있다.lifecycleScope는 코루틴이 Activity/Fragment가 destroy되면 자동으로 취소도도록 설계되어, 안전하고 효율적인 코루틴 관리를 제공한다.사용법 Gradle 의존성 추가dependencies { implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.1"..

DataStore란?

DataStore에 대해Jetpack 라이브러리의 일부앱에서 데이터를 저장하고 관리하기 위한 최신 데이터 저장소 솔루션SharedPreferences의 단점을 개선하고, 더 안전하고 효율적인 방식으로 데이터 저장주요 특징비동기적 데이터 저장 및 읽기Flow API를 활용해 데이터를 비동기적으로 읽고 관리Flow: Kotlin Coroutines에서 제공하는 비동기 데이터 스트림 처리 라이브러리코루틴 기반 처리DataStore는 Kotlin Coroutines를 기반으로 설계되어 안전하고 간단한 비동기 작업 처리가 가능타입 안정성Preferences DataStore와 Proto DataStore 두 가지 유형을 제공하여 데이터 타입에 대한 명확한 관리가 가능영구 데이터데이터를 앱의 파일 시스템에 저장하므..

정확한 위치 데이터 가져오기, 위치 데이터 저장 및 활용 (DataStore 활용)

6. 날씨 API 연동 (기상청 API)기상청 API 선별기상청 API를 사용하기 위해서 먼저 어떤 데이터가 필요한 지 특정해야 한다만들고자 하는 날씨앱에는 현재, 단기예보, 주간예보 등이 필요.먼저 현재 위치에 맞는 현재 날씨를 가joyshu93.tistory.com 이전 글에서 두가지 문제점이 남았다.현재 위치에 대한 정보가 Moutain View로 잘못 나옴 추후 수정이 필요현재 위치에 대한 현재 온도정보가 잘 나오는 듯하다, 하지만 요청할 때 현재 위치를 하드코딩했기 때문에 수정 필요해당 문제에 대해 하나하나 수정하려고한다.Mountain View 도시정보 이슈 로그 파악13:26:53.549 D 위도: 37.4220936, 경도: -122.08392213:26:53.927 D 도시: Mo..

22. Foreground Service를 활용한 음악 재생

3. Android 4대 컴포넌트 (Activity, Service, BroadcastReceiver, ContentProvider)의 이해Andoird의 4대 컴포넌트는 앱의 구조와 실행 흐름을 결정하는 핵심 요소다.각 컴포넌트는 독립적으로 동작하면서도 서로 상호작용하며 앱의 기능을 구성한다.Activity (화면 구성 컴포넌트)UI를 포함joyshu93.tistory.com Service의 유형유형설명Foreground Service사용자에게 지속적으로 표시되며, Notification을 필수로 포함해야 함Background ServiceUI 없이 실행되며 일정 시간이 지나면 시스템이 자동 종료Bound Service서비스가 종료될 때 호출   Foreground Service앱이 종료되더라도 지속적..

728x90
반응형