안드로이드 개발 시 반드시 포함되어야 하는 파일! 이라고 할 수 있다 많은 정보를 포함하고 있지만 그 중 특히 다음 4가지는 필수로 선언되어야한다1\. 앱의 패키지 이름2\. 앱에서 사용되는 컴포넌트3\. 권한4\. 앱에서 요구하는 하드웨어와 소프트웨어 특징

회사 작업 중 NaverMap SDK 공부가 필요하여 정리하게 되었습니다.

이번에 회사에서 MVP 으로 짜여진 코드를 MVVM 으로 리팩토링해야하는 일이 생겨 제대로 개념을 잡고 가고자 한다 개발을 하다보면 앱을 확장하고 앱의 유지보수 및 테스트를 위해 아키텍처를 정의하는 것이 중요하다는 것을 알 수 있다. 처음부터 아키텍처 구조를 정리하지
의존성 주입(Dependency Injection) 을 위해!자세한 정보는 앞으로 공부를 더 해보면서 추가해보도록 하겠다.@HiltAndroidAppApplication 확장 클래스에 붙여서 힐트의 코드를 생성할 수 있음@AndroidEntryPoint힐트 컴포넌트를
SharedPreferences? 초기 설정 값과 같은 간단한 값을 저장할 때 DB를 사용하면 복잡하기 때문에 SharedPreferences를 많이 사용하고있다. 형태는 (Key, Value) 로 data/data/패키지명/shared_prefs 폴더 안에 xml

서비스 운영 중, gRPC로 받아오는 실시간 데이터가 현장에서 누락되는 상황이 발생하였다. getState() 로 해당 stream channel 의 request connection 상태상태값을 확인해보았지만 많은 시행착오 끝에 찾아낸 원인은 네트워크가 불안정하여 발

ViewPager2 로 리스트를 출력할 때, 필요에 따라 특정 페이지를 디폴트로 지정해줘야 할 때가 있다. 이때 우리는 setCurrentItem(position, animation) 를 사용하여 포지션을 설정해준다. 그런데 가끔씩 current position 설정

Activity : 안드로이드에서 UI 를 관리하고 사용자가 발생시키는 이벤트를 처리함Service : 사용자 인터페이스를 갖지 않고 주로 백그라운드에서 오래 실해오디는 작업을 처리하기 위해 사용Broadcast Receiver : 안드로이드 시스템에서 발생하는 시스템

ViewPager 사용 시에 onBind 에서 해당 아이템 마다 리스너를 연결하고, onViewDetachedFromWindow 에서 해당 아이템에 연결된 리스너를 제거하는 방식으로 작업을 진행하고 있었다.ViewPager를 처음 init 할 시에는 문제가 없지만 다시
문제 발생 BLE 연결 중 해당 기기와 연결을 끊고 다시 Scan 할 때 기존의 기기가 연결되는 문제가 발생했다. > ### 원인 파악 > ### 문제 해결

이번에 회사에서 사용하는 Java 버전을 1.8 에서 21 로 업데이트 하게 되었다. 무려 3일을 잡아먹은 힘든 일이었다.간절한 기도를 통해 해결할 수 있었다...이 과정에서 발생한 이슈들을 정리해두고자 한다.Minimum supported Gradle version

마시멜로(6.0) 부터 배터리 최적화를 위해 doze 모드와 app standby 모드가 도입되어 많은 안드로이드 개발자들이 고난을 겪어왔다. 네트워크 엑세스 비활성화Wake Lock 무시알람 지연wifi 스캔 중지동기화 작업 중지네트워크 엑세스 비활성화백그라운드 작업

코루틴의 context를 변경하고 싶을 때나 비동기 코드를 순차적 실행할 때 사용하는 친구들이다. 실무에서 자주 접할 수 있기 때문에 이번에 정리를 해보고자 한다. > ### async-await > ### withContext 인자로 받은 CoroutineDis

RxJava 란 ReactiveX (Reactive Extentions) 를 자바로 구현한 라이브러리다. ReactiveX 는 Microsoft 사 주도 아래 옵저버 패턴, 이터레이터 패턴, 함수형 프로그래밍의 장점과 개념을 접목한 반응형 프로그래밍 기법을 의미한다.

작업하는 앱 특성 상 단말기에서 받아온 시간에 맞춰 다크모드를 실행해줘야 하는 문제로 Thread 클래스의 start 메소드를 호출하여 백그라운드 스레드를 사용 중에 있었다. 그런데 AppCompatDelegateImpl 클래스에서 updateAppConfigurati
Jetpack Compose는 Android를 위한 현대적인 선언형 UI 도구 키트사용자 인터페이스의 상태와 레이아웃을 설명하는 구조화된 데이터나 코드를 사용하여 UI를 정의 UI 를 구성하는 기본 단위로 @Compsable 어노테이션을 붙여서 정의함입력이 변경될 때
하나의 소비자(Consumer)에게 값을 보낸다생성된 이후에 누군가 소비하기 시작하면 데이터를 발행한다예) 상태가 변하지 않는 값을 읽을 때(DB를 읽거나 URL을 통해 서버 값을 읽는 경우)하나 이상의 소비자(Consumer)에게 값을 보낸다데이터 발행이 시작된 이후

구글이 앞으로 Android 15 이상 단말에서 targetSdkVersion 이 35 이상인 앱을 실행하면 강제로 edge-to-edge 를 적용한다고 발표했다. 앱 컨텐츠를 System Bar (status bar + navigation bar) 영역까지 확장하여

이번 프로젝트에 실물 카드와 계좌를 연동하는 핀테크 사업 관련 작업이 있어 보안 취약점에 관해 알아보게 되었다.Java에서 String 객체는 불변 객체로서 메모리에 한번 쓰여지면 수정되지 않는다. 즉, 입력 후 초기화하여도 메모리에 남아있으며, 메모리 덤프를 통해 평