안드로이드 16

[안드로이드]Room 의 기본

안드로이드의 감을 잊지 않고 꾸준하게 공부를 동기부여를 위해 NextStep의 안드로이드 아키텍처 강의를 듣고 있다. 최근 mvvm 과제를 하면서 Room 을 사용할 일이 생겨서 기본적인 내용을 정리해 보았다. 원래 원노트에 정리해서 블로그에 옮길 때 스타일이 많이 깨져서 블로그에 공부한 내용을 올리기가 어려웠는데, 이제 VS CODE 의 플러그인으로 Markdown 으로 작성 후 원노트에 다가 배포하는 형태로 노트들을 적고 있어서 복사-붙여넣기만 하면되기에 블로그에도 한번 올려본다. Room 을 처음 사용하는 사람들에게 도움이 되었으면 합니다. Room 의 기본 Room? SQLite 를 손쉽게 사용할 수 있도록 추상화 계층을 제공 ORM 라이브러리의 일종으로 JPA 와 유사한 것으로 보임 사용방법 안..

Android Context

Context 에 대해 공식 문서 내용에는 아래와 같이 나와 있습니다. Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc. 번역을 해보자면, 어플리케이션 환경에 대..

안드로이드 11 대응(Target SDK 30) - Scoped storage

2020년 11월 1일 부로 안드로이드 Target SDK 레벨이 29 이상이어야만 업데이트가 가능합니다. 이로 인해서 Target SDK 를 올리는 작업을 하기로 결정하게 되었고, 이왕 작업하는 거 Target SDK를 30으로 올리자고 의사결정했습니다. Target SDK 30 으로 올리기 위해 작업한 내용들을 공유하고자 합니다. Scoped Storage 적용, Custom Toast 를 시스템 Toast로 전환, 백그라운드 서비스 권한 부여 및 처리 등을 진행했습니다. 이번 시간에는 Scoped Storage 를 적용한 것을 공유합니다. 과거 상태 회사에서 개발하고 있는 앱에서 접근 하고 있는 파일들의 구조를 간략하게 설명해보면 아래와 같습니다. 외부 저장공간(Environment.getExter..

Fragment에서 호출한 Activity의 결과 받기(onActivityResult 호출 원리)

Fragment 에서 activity 호출 후 호출된 Activity 종료 시 작업 결과 DATA 를 리턴받고 싶을 때가 있습니다. 이 때 아래와 같이 하면 리턴을 받을 수 있습니다. 1. Fragment를 포함하는 Activity 에 FragmentActivity 를 상속 2. Fragment 에 onActivityResult 를 오버라이딩하여 구현 3. Fragment 에 startActivityForResult() 메소드를 호출 4. Fragment 에 의해 실행된 Activity 에서 setReslut 후에 finish 5. Fragment 의 onActvityResult 가 실행됨. 일단, onActivityResult 는 Fragment 를 포함하고 있는 Activity 부터 먼저 호출됩니다...

org.apache.commons.io 라이브러리에서 java.lang.NoSuchMethodError 에러 해결

몇 달 전부터 APP.을 실행시키거나 사진이 들어간 페이지를 작성하면 죽는다는 VOC를 접수했습니다. 사용자는 삼성 노트 4에 안드로이드 6 버전을 사용하고 있었습니다. 최근 10월 말 릴리즈를 하면서 테스트할 때는 이상이 없었기에 안드로이드 API 호환성 문제로 의심하고, 애뮬레이터를 해당버전에 맞게 세팅하고 재현에 들어갔습니다. 그러자, 이미지를 TEMP 디렉토리에 복사 또는 제거하는 부분에서 Crash가 되었습니다. 로그 중에 특별한 내용은 아래와 같았습니다. java.lang.NoSuchMethodError: No virtual method toPath()Ljava/nio/file/Path; in class Ljava/io/File; or its super classes (declaration o..

2019 GDG DevFest Suwon 참석 후기

제가 서울로 이직한 이유 중 하나가 개발 관련 좋은 교육, 세미나, 커뮤니티 참여 때문이었습니다. 하지만 이직하고, 3개월이 지났지만 대구에 있는 아내와 두 딸 때문에 금요일과 주말에는 참석이 어려운 관계로 여러 교육이나 세미나를 생각보다 많이 참석하지 못해서 아쉬워하고 있던 찰나 GDG DevFest 수원은 평일 저녁에 하는 것을 보고 냉큼 신청하고 오늘 다녀왔습니다. 최근 슬럼프가 온 건지 일에 집중력이 떨어지고, 개인적으로 개발 공부나 사이드 프로젝트을 진행도 손놓고 있었는데, 가서 발표하시는 분들의 이야기를 듣고, 함께 참여한 분들을 보며 다시 열심히 해봐야지 라는 생각을 가졌습니다. 그리고, 일과 관련된 것이 아닌 딴짓이라 불릴 수 있는 개인사이드프로젝트나 개발 등을 한 경험을 나누는 주제로 진..

android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground() 오류 해결

최근 가로/세로 모드 방향전환이 가능하도록 가로모드 개발을 했습니다. 가로/세로 방향전환 시 최초 실행되는 MainActivity에서 아래와 같은 오류가 간헐적으로 발생했습니다. 2019-10-01 09:23:27.681 ~~~~~~~~~~~~~~~~~~~ /AndroidRuntime: FATAL EXCEPTION: main Process: ~~~~~~~~~~~~~~~~~~~ android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground() at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1791) a..

안드로이드 가로/세로모드 고정하는 방법

최근 회사에서 Tablet 해상도에 가로모드를 지원을 위해서 개발을 진행했었습니다. 가로/세로 모드를 적용하다보면 여러가지 기초 지식들이 햇갈릴 때가 많은데요. 그래서, 저도 다시 공부하고 여러분께도 도움이 되고자 화면전환과 구성변경 관련되서 연재 포스팅 합니다. 아마 이번 포스팅 포함해서 2~3번 정도면 모두 정리 될 것 같네요. 먼저, 오늘은 가로 또는 세로 방향으로만 고정하는 방법에 대해 말씀드릴께요. 1. 가로 또는 세로 방향으로 고정하는 방법 먼저, 안드로이드에서 방향을 고정하기 위한 방법은 두가지가 있습니다. 첫번째는 AndroidManifast.xml 의 을 이용해 가로 또는 세로로 고정시키는 방법입니다. 그리고, screenOrientation 에서 사용할 수 있는 value는 아래 안드로..

구성변경(Configuration)에 따른 엑티비티 재시작

이전 글 : 2019/09/13 - [Tech & Programming/안드로이드 & 모바일] - 안드로이드 가로/세로모드 고정하는 방법 2. 구성변경(Configuration)에 따른 엑티비티 재시작 이 전 포스팅(2019/09/13 - [Tech & Programming/안드로이드 & 모바일] - 안드로이드 가로/세로모드 고정하는 방법) 에서 언급한 것처럼 화면방향, 휴대폰 Locale 등이 변경되어 Activity 를 재시작하면 하나의 인스턴스를 가지고 재사용 하는 것이 아니라, 기존 인스턴스는 onDestroy()까지 실행하고 새 인스턴스가 onCreate() 부터 새로 시작됩니다. 1) 구성 한정자란? 구성(Configuration) 은 Actvity를 비롯한 컴포넌트에서 어떤 리소스를 사용할 ..

[안드로이드] Migrating to the New Places SDK Client (구 버전은 2019.7.29 종료)

회사에서 서비스하는 어플에 Place Autocomplete, Current Place 등을 사용하고 있습니다. 이런 기능들을 제공하던 place-services-places Places SDK 가 2019년 7월 29일 서비스가 종료되었습니다. 그래서, 최근 회사에 새롭게 바뀐 Places SDK 로 교체했습니다. 혹시 아직 교체 안하신 분이 있을까 해서 포스팅합니다. 1. 요약 Google Play Services 버전의 Places SDK(com.google.android.gms:play-services-places)가 2019년 1월 29일부터 deprecated 되고, 2019년 7월 29일부터 서비스가 종료됩니다. 따라서, 새로운 버전의 Places SDK 버전으로 교체해야합니다. 2. 사전 ..