본문 바로가기

전체 글

(71)
SingleTon Singleton Pattern오직 하나의 인스턴스만 제공하는 클래스 Why?하나의 클래스를 여러 곳에서 사용하다보면 불필요하게 여러 개의 동일한 클래스가 생성되어 메모리 낭비가 일어날 수 있다.또는 setting과 같이 인스턴스가 하나여야만 하는 클래스가 있을 수 있다. 따라서 어디서 사용되어도 동일한 기능을 제공하는 클래스라면 불필요하게 여러 개의 인스턴스를 생성할 필요 없이 하나의 인스턴스만 제공하면 효율적으로 메모리를 사용할 수 있게 된다.class Test{ companion object { private var instance: Test? = null fun getInstance(): Test{ return instance ?: Single..
이미지 캐싱 이미지를 로딩할 때마다 서버에서 불러온다면 네트워크 요청이 자주 발생하게 되고, 이로 인하여 앱의 성능이 저하될 수 있다.이를 개선하기 위해 Cache를 사용하는데, 한 번 불러온 이미지를 Cache에 저장하여 여러번 사용되는 이미지에 대해 네트워크 요청을 줄이고, 빠르게 불러와 데이터 로딩 속도를 줄여 앱의 성능을 향상 시킬 수 있다. 이미지를 사용할 때 주로 사용하는 라이브러리인 Glide와 Coin 등에서는 이러한 기능들을 제공해주기 때문에 따로 설정할 필요는 없지만 어떻게 캐싱을 하는지는 알고 있어야 한다. 캐싱의 종류1. 메모리 캐싱메모리 캐싱은 말 그대로 메모리에 캐싱을 저장하여 보다 빠르게 접근할 수 있지만 휘발성이며, 메모리라는 제한으로 인해 많은 데이터를 저장할 수 없다는 특징을 갖고 있..
WorkManager 앱 종료 상황에서 동작 WorkManager는 로그인 상태에서 동작하고 비회원일 땐 동작하지 않아야 하기에 로그인 성공한 시점에 한 번 등록하게 구현하였다. 다만 테스트를 위해 Application에서 WorkManager를 등록하여 테스트를 하던 도중 발생한 문제이다. 처음 나의 예상은 앱을 실행 > 특정 시간에 작업 수행이었고 앱을 킨 상태에서는 문제 없이 동작하였다.그러나 WorkManager를 쓰는 이유, 앱이 종료 된 상태에서도 돌아가야 한다. 따라서 앱을 실행하여 WorkManager에 등록 후 앱을 종료하고 트리거 시간까지 기다려보았다.당연히 동작하지 않아서 로그를 찍어보았는데 특정 시간이 되면 다시 WorkManager를 등록하여 기존의 작업이 취소되는 문제가 있었다. 분석여기서 유추할 수 있는 부분은 앱이 종료..