본문 바로가기

안드로이드

안드로이드 액티비티 라이프 사이클 알아보기 안드로이드 액티비티 라이프사이클 안드로이드 개발시 기본이자, 제일 중요한 부분일 수 있는 액티비티의 라이프 사이클 입니다. 뭐든것은 순서가 있듯이... 우리의 액티비티가 생성되는 순간에도 내부에서는 여러가지 일이 생기고 있죠. 매우 간단한 예제를 통해 알아보겠습니다. 각각의 메서드에서 해당문자를 출력하여 라이프 사이클 시점을 알아 보도록 합니다. 1 2 3 4 08-30 08:09:04.280 8736-8736/com.example.test.mynewapplication I/TAG: ---onCreate--- 08-30 08:09:04.305 8736-8736/com.example.test.mynewapplication I/TAG: ---onStart--- 08-30 08:09:04.329 8736-87.. 더보기
안드로이드 API 26 업그레이드 요구사항 안드로이드 api 업그레이드 요구사항 안녕하세요. 이번에 앱 업데이트를 하던중 요딴걸 발견 했습니다. 무려 구글이 날린 경고 였죠. '2018년 후반부터 API 레벨 대상 지정 요구사항' 뭔소리야 하고 알아봤더니 여러가지로 귀찮은 내용입니다. 심호흡 하시고 후우... *2018년 하반기에 Google Play는 새 앱과 앱 업데이트 시 최신 Android API 레벨을 대상으로 지정하도록 요구할 것입니다. 2018년 8월에 새 앱에 대해, 그리고 2018년 11월에 기존 앱의 업데이트에 대해 이를 요구할 것입니다. 이는 보안 및 성능에 최적화된 최신 API를 기반으로 앱을 빌드하도록 보장하기 위한 것입니다. *Google Play는 2019년 8월에 네이티브 라이브러리를 포함한 새 앱과 앱 업데이트에서 .. 더보기
안드로이드 런타임 퍼미션 깨부수기 안드로이드 지식 공유 런타임 퍼미션 관리하기 안드로이드는 6.0(API 23) 마시멜로우를 기점으로 런타임 퍼미션이 적용되었습니다. 기존에 사용하던 설치시점에서의 권한 부여 방식은 잊으셔야 합니다. 런타임 퍼미션 적용으로 인해 사용자가 직접 권한을 허용/거부할수 있으며 설정으로 들어가면 언제든 허용/거부를 다시 컨트롤 할 수 있습니다. * 주의 : 런타임 퍼미션 적용은 상당히 귀찮고 피곤함을 야기시킵니다. 안드로이드 시스템의 권한의 경우 두가지로 나눠 볼 수 있는데요. 1. normal 2. dangerous 1은 그야말로 권한 설정을 해도 아무 위험이 없는 경우, 2는 개인정보 등의 이유로 위험이 되는경우 입니다. 1의 경우 메니페스트 설정을 통해 나열하면 시스템에 권한이 부여됩니다. 문제는 2 인데요.. 더보기
자바 메모리 Stack 과 Heap 영역에 대하여 안드로이드 지식 공유 자바 메모리 영역 - stack and heap 그냥 만들어도 만들수 있습니다. 그렇지만 알고 만드는 것과 알고 만드는 것은 많은 차이가 있죠. 개발시 가장 기본이자 기본. 메모리 구조. 정말 중요하지만 쓰다보면 까먹는 게 또 바로 이 메모리 영역에 대한 이해 입니다. 눈에 보이지 않기 때문이죠...ㅠㅠ 자바는 메모리 관리를 따로 해줄수가 없습니다. 순전히 가비지 컬렉션에 의지해서 잘 관리 해주길 바랄 뿐이죠 ^^;;;;;;; 자바 메모리 영역은 여러가지가 있지만 오늘은 크게 두가지로 나누어 알아보겠습니다. 바로 stack과 heap 입니다. 스택은 말 그대로 메모리에 정보를 쌓는 구조로 설계 되어 있죠. 그에 반면 heap에 있는 데이터는 반드시 주소(참조)값이 있어야 원하는 위치.. 더보기
안드로이드 웹뷰 핀치 줌 인 / 아웃 안드로이드 지식 공유 안드로이드 웹뷰 - 줌 인 아웃 적용 안드로이드 개발시 매우 귀찮게 하는 녀석이 있습니다. 바로 웹뷰 인데요. 최근의 앱들은 거의 대부분 하이브리드 형태로 만들어 지고 있습니다. * 여기서 말하는 하이브리드는 네이티브개발영역 + 웹 영역이 결합된 형태 입니다. 이 웹뷰가 여러가지로 귀찮은 녀석입니다. 기존의 브라우저 처럼 잘 동작해주지 않기 때문이죠. 그래도 여러가지 설정을 참고하시면 브라우저 못지 않게 잘 사용하실수 있습니다. 오늘은 핀치 줌인/아웃 입니다. 아이폰의 경우 뷰포트 설정만 해주면 잘 동작하는데요. 우리의 안드로이드는 그런거 없습니다. ^^;;;;; 1. 우선은 웹페이지 상의 소스를 수정해주셔야 합니다. 우선 웹페이지 상에 뷰포트 설정을 해주시구요. maximum 으로.. 더보기
UI쓰레드에서 긴작업을 하면 안되는 이유 안드로이드 지식 공유 UI 쓰레드와 백그라운드 쓰레드 Main 쓰레드와 백그라운드 쓰레드를 어떻게 사용해야 할까? 저는 안드로이드 개발 초기에 UI 개발에 대한 개념이 부족하다 보니 많은 어려움이 있었습니다. 게다가 쓰레드에 대한 개념이 명확하지 않아서 정확하게 일을 처리할 수 없었죠. 지금은 쓰레드가 너무 재미있습니다. 기억을 거슬러 한번 정리하면서 메인쓰레드, 백그라운드 쓰레드를 언제 만들어서 사용하는지 구분해서 알아보겠습니다. 몇가지 규칙을 지킨면 그야말로 유저친화적인 앱을 만들수 있습니다. 1. 긴 시간이 걸리는 작업은 반드시 백그라운드 작업자를 통해 사용하도록 한다 2. UI(화면) 관련 제어가 필요하다면 반드시 UI 쓰레드(Main Thread)에게 맡겨라 이것이 전부 입니다. 간단하죠? 이 .. 더보기
HandlerThread 의 활용 안드로이드 지식 공유 HandlerThread 의 활용 우리가 전편에서 구경했던? Handler 는 매우 쉽고 간편하게 비동기적 처리를 담당해주는 고마운 녀석이 었습니다. 그러나 백그라운드 작업에서 핸들러를 설정하려면 여러가지로 셋팅해줘야 할 부분들이 생기죠. 쓰레드의 동작 까지 신경써야 합니다. 그리하여 우리는 HandlerThread 라는 녀석과 만나게 됩니다. https://developer.android.com/reference/android/os/HandlerThread 이 녀석은 쉽게말해 우리가 쓰레드를 생성하고 그안에 핸들러 셋팅까지 했던 것을 자동으로 해주는 고마운 친구 입니다. 즉 Thread Looper MessageQueue 의 복잡함을 자동으로 관리해준다는 말이죠. 동작방법은 너무도.. 더보기
Handler 에 대한 이해 안드로이드 지식 공유 Handler 에 대한 이해 안드로이드를 개발하면서 Handler 에 대해서 과연 알고 사용하는 것인가? 에 대한 의문이 들었습니다. 편해서 혹은 그냥 아무생각 없이 핸들러를 너무도 막 사용하기 때문이죠. 그게 틀렸다는게 아니고 알고 쓰면 더 좋겠다!! 라는 생각에서 정리해보려 합니다^^ https://developer.android.com/reference/android/os/Handler Handler 는 안드로이드 API 1 레벨 부터 사용되어진 매우 익숙한 존재입니다. 비동기적으로 처리해야할 로직을 아주 간단하게 그리고 편리하게 처리할 수 있죠. 사실 내부에 어떤 방식으로 동작하는지에 대해서는 굳이 알필요가 없을 수도 있습니다. 그냥 편하게 쓰고자 하면 말이죠. 1 2 3 4.. 더보기