본문 바로가기

안드로이드36

[Android] 전화번호 하이픈(-) 자동표시하기 전화번호는 정보를 일반적으로 DB에 저장되는 형태는 "01012345678" 문자열 형태입니다. 사용자 화면에 보여줄 때는 "010-1234-5678"로 보여주는 것이 훨씬 가독성이 좋습니다. 이러한 작업을 안드로이드에서 제공하는 기본 메서드를 이용하면 표현이 가능합니다. 1. 전화번호 DB를 가져와서 표현할 때 String hyphenPhoneNumber = PhoneNumberUtils.formatNumber("01012345678", Locale.getDefault().getCountry()); System.out.println(hyphenPhoneNumber); // 010-1234-5678 2. EditText에서 사용자가 직접 입력할 때 자동으로 표시 회원가입, 주문서 작성, 본인인증 시에 사.. 2021. 4. 23.
[Kotlin] Fragment에서 Activity 함수 호출하는 방법 요즘 Android 앱 개발에서 다양한 화면을 구성하다 보니 Fragment를 자주 사용합니다. 필자의 경우, TabLayout과 ViewPager을 이용하여 하나의 Activity 안에 3가지의 Fragment를 구성하였다. 개발과정에서 Fragment 내에서 발생한 이벤트로 인해 Activity 내 함수를 호출해야 하는 상황이 발생했다. Fragment → Activity 호출 방식은 아래와 같습니다. * 코틀린 방식 (activity as MainActivity).userList() * 자바 방식 ((MainActivity) getActivity()).userList(); 2021. 4. 16.
[실무 라이브러리] RxJava와 Coroutines 비교해보자 안드로이드 개발을 진행하다보면, REST API를 통해서 목록과 상세정보를 불러오는 기능을 필수적으로 개발하게 된다. 일반적으로 사용자들은 평균적으로 앱을 이용할 때 기다릴 수 있는 시간이 2~3초 사이라고 한다. 앱을 이용하는 목적이 편리하고 빠르게 정보를 확인하기 위함이기 때문에 앱 개발자에게 비동기 처리기술은 필수적으로 학습해야할 요건이다. 최근에도 꾸준히 사용하고 있는 대표적인 비동기 라이브러리 기술을 소개한다. RxJava, Coroutines 2가지이다. * ReactiveX : An API for asynchronous programming with observable streams 비동기 프로그래밍을 Observable streams을 활용하는 API이다. RxJava는 최신 버전이 3.x.. 2021. 4. 10.
액티비티 상태 저장 onRestoreInstanceState(), onSaveInstanceState() 안드로이드 앱 개발 시, 태블릿의 경우 사용자마다 가로/세로 회전(화면전환)을 이용하는 경우가 있습니다. 화면전환 시, 안드로이드 생명주기에 따라서 onPause() → onStop() → onDestory() → onCreate() → onStart() 로 진행됩니다. 한 마디로 액티비티를 새로 그려주게 됩니다. 만약에 사용자가 회원가입 과정 중에, 다수의 개인정보를 입력하고 있다가 화면전환을 했다는 이유로 입력했던 모든 정보가 초기화되면서 새로 입력해야 한다면 큰 문제가 될 것입니다. 이럴 때, onSaveInstanceState(), onRestoreInstanceState() 함수를 사용하여 데이터를 보관 및 다시 불러오면 초기화 현상을 막을 수 있습니다. @Override protected vo.. 2021. 3. 29.
[JetPack] ViewModel 의 역할 ViewModel 클래스는 UI 관련 데이터를 저장하고 관리하기 위해 설계되었다. 안드로이드 프레임워크는 특정 사용자 동작 또는 사용자 제어에서 완전히 벗어난 장치 이벤트에 대한 응답으로 UI 컨트롤러를 파괴하거나 re-create 하도록 한다. 약 시스템이 UI 컨트롤러를 destory하거나 re-creates한다면 별도로 저장되지 않은 데이터를 잃게 된다. 여러분의 앱이 사용자의 리스트를 포함하고 있다고 생각해봅시다. 만약 액티비티가 상태 변경으로 재 생성이 된다면, 새 액티비티는 사용자 리스트를 re-fetch 해야한다. 간단한 데이터의 경우 onSaveInstanceState() 메소드를 써서 onCreate()에서 다시 데이터를 받을 수 있지만, 이 방식은 bitmap과 리스트 형식의 많은 양의.. 2021. 3. 15.
[Kotlin] 앱 비정상 종료 시, 대체 액티비티 띄우기 ! 개발자에게 있어서, 앱의 버그만큼 신경쓰이는 부분이 있습니다. 바로 앱 구동 중에, 비정상적으로 종료되버리는 현상입니다. 앱이 비정상 종료되는 원인은 다양합니다. 현재까지 대표적으로 겪은 사례로는 IndexOutOfException, Thread Exception 두 가지가 있었습니다. * IndexOutOfException : ArrayList를 사용하던 중에, 빈 데이터에서 직접적으로 특정 인덱스를 접근하는 경우, 에러가 발생하는 경우. ArrayList articleList = new ArrayList(); // 5번째 항목을 접근 String fifthValue = articleList.get(4); // IndexOutOfException 발생 * Thread Exception : 백그라운드 스.. 2021. 3. 12.
[Android] 회전모드 최적화 하는 방법 (상태유지) 앱 서비스마다 다르겠으나, 태블릿에서 자주 사용하는 이용자들의 경우에는 가로모드 최적화 서비스를 요청하는 경우가 있습니다. 이럴 때는, 앱 서비스를 이용하는 도중에 디바이스를 회전하더라도 현재보고 있는 상태에서 화면에 맞도록 최적화 시켜줄 필요가 있는데요. 고객의 요구사항을 어떻게 해결할지 방법을 알아보도록 합시다. 1. AndroidManifest.xml 에 들어가서, 태그를 확인합니다. 보통은 위처럼 name, theme 속성값만 존재합니다. 2021. 1. 22.
[Kotlin] 싱글턴 패턴 개발을 하다보면, 수많은 클래스의 객체를 생성하는 일들이 많다. 하지만, 대부분 알고보면 똑같이 사용하는 객체를 무분별하게 반복적으로 생성하는 경우를 볼 수 있다. 계속해서 객체를 생성하게 되면, 불필요한 메모리를 낭비하게 된다. 왜냐하면 신규 객체 생성 시, CPU에서 일정한 메모리를 할당하게 되기 때문이다. 하나의 객체를 생성하여 여기저기서 반복해서 사용할 수 있는 패턴이 바로 "싱글턴 패턴(Singleton Pattern)"이다. * Singleton : 클래스의 인스턴스는 오직 하나임을 보장하며, 이 인스턴스에 접근할 수 있는 방법을 제공한다. 아래 코드는 MySQL 연결을 싱글턴 패턴으로 구현한 예제이다. 1. MySQLOpenHelperSingleton (Singleton 패턴으로 생성) pa.. 2021. 1. 21.
[Kotlin] 코틀린 익스텐션 사용하기 (kotlin-android-extensions) Java 언어로 안드로이드 개발을 진행하다보면, Layout (.xml 파일)에 선언한 Button, TextView, ImageView 등등에 대해서 활용하기 위해서 findViewById()를 수없이 많이 쓰게 된다. 개발자로서 반복적인 작업을 계속하는 비효율적인 구조.. 이를 개선하기 위해서 ViewBinding(뷰바인딩)이라는 개념이 있다. * ViewBinding이란? 뷰 바인딩(View Binding) 은 뷰와 상호 작용하는 코드를보다 쉽게 ​​작성할 수있는 기능입니다. 각 XML 레이아웃 파일에 대한 바인딩 클래스가 자동으로 생성됩니다. 바인딩 클래스 인스턴스에는 해당 레이아웃에 ID가 있는 모든 뷰에 대해 직접적으로 참조됩니다. * ViewBinding 설정하기 build.gradle (a.. 2021. 1. 20.