개발86 [Android] 안드로이드 메모리 누수에 관하여 최근 운영하고 있는 서비스는 Firebase Crashlytics를 사용해서 앱의 로그를 수집하고 있습니다.99.99%정도는 크래쉬가 발생하지 않지만 일부 크래쉬가 리포트되고 있는데, 그 중 OOM이 꽤 비중을 차지하고 있습니다.이미지 또는 동영상이 보이거나 백그라운드에서 센서를 활용하는 등의 기능이 있어서인지 OOM이 크래쉬의 주된 원인이 되고 있는데요.이러한 OOM의 원인은 메모리에 비해 큰 이미지, 동영상과 같은 것을 로드할때도 발생하지만 메모리 누수에 의해 발생하기도 합니다. 메모리 누수메모리 누수는 필요하지 않은 메모리를 계속 차지하고 있는 것을 말합니다.사용하지 않는 메모리가 계속 공간을 차지하기 때문에 필요한 메모리들이 할당될 공간이 점점 적어지고 결과적으로 메모리가 부족한 상황에 이르게 됩.. 2025. 2. 4. [Android] Jetpack Compose - Layout으로 커스텀 레이아웃 만들기 프로젝트 진행 중에 커스텀 레이아웃이 필요했습니다.스크롤이 가능한 Column에서 staggered layout이 필요했는데, LazyVerticalStaggeredGrid을 사용하기엔 중첩 스크롤 문제가 발생했기 때문입니다.그래서 이러한 상황에서 사용 가능한 staggered layout을 구현하기로 했습니다.이를 위해 커스텀 레이아웃을 구현하기 위해 기본적으로 이해가 필요한 부분이 있었기 때문에 이에 대해 포스팅합니다. LayoutCompose에서 기본적으로 제공하고 있는 Scaffold, Surface, Column, Row 등은 Layout를 기본적으로 사용하여 구현되어 있습니다.다음은 하나의 예로, Column 컴포저블 함수의 코드입니다.@Composableinline fun Column( .. 2025. 2. 2. [Node.js] JWT 사용해서 인증하기 요즈음 사이드 프로젝트를 하면서 Firebase를 백엔드로 활용하고 있습니다.Functions와 Node.js의 조합으로 백엔드를 구현하고 있고 그 외에 필요한 서비스들을 붙여가고 있습니다.서비스를 개발하면 회원가입, 로그인과 같은 인증을 구현하는것이 거의 필수적이다보니 Firebase에서 제공해주는 인증 서비스를 사용하여 구현하였습니다만, 속도가 매우매우 느려서 전체적인 API 퍼포먼스가 너무 안좋았습니다.그래서 Firebase의 인증을 버리고 직접 DB와 인증 토큰 처리를 구현했습니다.JWT란?JWT는 Json Web Token의 약어로, 인터넷 표준 인증 방식입니다.이름을 봤을때에는 인증에 필요한 정보들이 Json 처럼 생겨있을 것 같고, 암호화된 Token 형식일 것 같이 느껴지죠.JWT는 {He.. 2025. 2. 1. Kotlin Coroutines, 에러 처리와 SupervisorJob 오늘날 Kotlin 기반의 안드로이드 앱을 개발하고 있다면 Coroutines를 사용하고 있을 것입니다.그렇다면 십중팔구 Jetpack ViewModel에서 제공하는 ViewModelScope를 사용하고 있을텐데요.ViewModelScope를 생성하는 코드를 보면 SupervisorJob이 등장합니다.package androidx.lifecycle.viewmodel.internalinternal fun createViewModelScope(): CloseableCoroutineScope { val dispatcher = try { Dispatchers.Main.immediate } catch (_: NotImplementedError) { EmptyCoroutineCo.. 2025. 1. 29. 이전 1 2 3 4 ··· 22 다음 반응형