본문 바로가기

Programming 개발은 구글로/JAVA[Android]52

[안드로이드] 아키텍쳐 컴포넌트(AAC) - LiveData, Databinding, Room, ViewModel Android Architecture Component(AAC) : 안드로이드 아키텍처 구성요소 는 테스트와 유지관리가 쉬운 앱을 디자인하도록 돕는 라이브러리 모음이다. 1. LiveData 1.1 개요 LiveData는 관찰이 가능한(Observable) 데이터 홀더 클래스 이다. Activity, Fragment, Service와 같은 컴포넌트의 LifeCycle을 인식하며 LifeCycle 인식을 통해 활성 상태에 있는 컴포넌트의 Observer만 업데이트한다. Observer는 LiveData의 관찰자 이다. Observer의 Lifecycle이 STARTED 또는 RESUMED 상태이면 LiveData는 Observer를 활성 상태로 간주하여 업데이트 정보를 알린다. 1.2 장점 UI와 데이터 .. 2022. 5. 10.
Android studio - 한글지원 Android studio 한글 지원 노트북 변경이나 Android 개발 할 때마다 Android studio 언어 설정으로 고생했던 기억이 많아서 따로 남깁니다. C:\Program Files\Android\Android Studio\bin 폴더에서 studio64.exe.vmoptions 파일을 메모장으로 열기 마지막 줄에 "-Dfile.encoding=UTF-8" 추가 Android studio 재실행 시 적용됩니다. 2022. 4. 27.
[안드로이드] BottomNavigationView로 하단 바 만들기 BottomNavigationView : 많은 애플리케이션에서 많이 보이는 Material Design 중 하나가 Bottom Navigation이다. BottomNavigationView는 하단에 바 형태의 메뉴를 생성하여 사용자에게 인터페이스(UI)를 제공하고 있습니다. BottomNavigationView를 Bottom Tab이라고 하시며 TabLayout 대신 사용하시는 분들이 있는데 Tab과 Navigation에는 역할적으로 많은 차이가 있습니다. 구글에서도 BottomNavigationView에는 TabLayout과 달리 Swipe 해서 화면을 넘기는 것을 권장하지 않고 있습니다. NavigarionView를 구성할 때에는 Fragment라는 UI 컴포넌트를 사용합니다. Fragment는 별도.. 2022. 4. 19.
[안드로이드] getContext(), requireContext() 차이 getContext(), requireContext() 먼저 메서드의 정의를 보면 다음과 같다. @Nullable public Context getContext() { return mHost == null ? null : mHost.getContext(); } getContext()는 Nullable(1), requireContext()는 NonNull(2) Annotation(주석)이 붙어있다. getContext()는 context가 호스트에 붙어있지 않을 때 Null을 반환한다. @NonNull public final Context requireContext() { Context context = getContext(); if (context == null) { throw new IllegalSta.. 2022. 4. 18.
[안드로이드] getContext(), getApplicationContext(), getBaseContext(), this의 차이 Context : 애플리케이션 환경에 대한 인터페이스이자, 추상 클래스이다. 즉, 애플리케이션의 현재 상태를 뜻한다. Context를 통해 애플리케이션에 접근할 수 있고, 애플리케이션 수준 작업을 호출할 수 있다. 안드로이드 개발 중 Context에 자주 접근하게 되므로 Context를 잘못 사용하면 메모리 누수가 발생할 수 있다. 따라서 Context에 관한 내용을 확실히 정리하고 넘어가려 한다. Context에는 두 가지 유형이 존재한다. Application Context와 Activity Context이다. Application Context는 Application 전용 인스턴스이고, Activity Context는 Activity 전용 인스턴스이다. Application Context 싱글톤 패.. 2022. 4. 18.
[안드로이드] JAVA 싱글톤 패턴 싱글톤 패턴(Singleton) : 싱글톤(Singleton) 패턴의 정의는 단순하다. 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다. public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { // 생성자는 외부에서 호출못하게 private 으로 지정해야 한다. } public static Singleton getInstance() { return instance; } } 1. 싱글톤 패턴의 사용하는 이유 1. 메모리 낭비 방지 최초 한 번의 new 연산자를 통해서 고정된 메모리 영역을 사용하기 때문에 추후 해당 객체에 접근할 때 메모리 낭비를 방지할 수 있다. 뿐만 아니라 .. 2022. 4. 16.
[안드로이드] Swiperefreshlayout - Swipe 새로고침 Swiperefreshlayout : Swiperefreshlayout은 사용자가 수동으로 업데이트 를 요청할 수 있도록 한다. Swiperefreshlayout이 적용되어 있는 Activity에 수직으로 pull하면 업데이트가 트리거된다. 아래의 예시는 새로고침을 할 때마다 새로고침 횟수를 알려준다. 1. build.gradle (Module: app) 수정 dependencies { implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" } build.gradle(Module: app) 파일을 열어 Swiperefreshlayout와 관련된 빌드 종속성을 추가해준다. 현재 최신버전은 버전 1.2.0-alpha01 이다. https:.. 2022. 4. 15.
[안드로이드] RecyclerView 사용하기 RecyclerView 리사이클러뷰(RecyclerView)는 "사용자가 관리하는 많은 수의 데이터 집합(Data Set)을 개별 아이템 단위로 구성하여 화면에 출력하는 뷰그룹(ViewGroup)이며, 한 화면에 표시되기 힘든 많은 수의 데이터를 스크롤 가능한 리스트로 표시해주는 위젯"입니다. - ViewHolder : 항목에 필요한 뷰 객체를 가진다. - Adapter : 항목을 구성한다. - LayoutManager : 항목을 배치한다. - ItemDecoration : 항목을 꾸민다. 목록의 뷰는 ViewHolder로 표현되며 각 ViewHolder는 View를 사용하여 각 항목을 표시하는 역할을 한다. ViewHolder 객체는 Adapter에서 관리하며 Adapter는 필요에 따라 ViewHol.. 2022. 4. 14.
[안드로이드] Toast 메시지 Toast 메시지 띄우기 1. Toast 클래스 Toast는 사용자를 위한 간단한 메시지가 포함된 메시지입니다. Toast 메시지가 표시되면 Focus를 받지 않고 애플리케이션 위에 잠시 동안 떠오릅니다. Toast 메시지를 사용하는 가장 간단한 방법은 Toast 클래스의 정적 메서드 중 하나를 호출하는 것입니다. - Public Methods: 반환 값 프로토타입 static Toast makeText(Context context, int resId, int duration) static Toast makeText(Context context, CharSequence text, int duration) makeText(getApplicationContext(), R.string.toast_message.. 2022. 4. 14.
[안드로이드] Android 개요 Android : 안드로이드는 구글에서 만든 스마트폰용 운영체제입니다. 운영체제와 미들웨어, 사용자 인터페이스, 애플리케이션, MMS 서비스 등을 하나로 묶어 서비스를 제공하며 다양한 애플리케이션을 만들어 설치하면 실행될 수 있도록 구성된 애플리케이션 플랫폼입니다. 많은 사람들이 iOS(애플 운영체제)에 견주어 스마트폰과 태블릿으로 안드로이드 운영체제를 사용하면서, 안드로이드는 세계 모바일 시장에서 가장 성공한 OS라는 평가를 받고있습니다. 안드로이드는 리눅스(Linux)를 기반으로 제작되었고 언어는 자바(java)를 사용합니다. 1. 안드로이드의 이해 : 안드로이드는 구글(Google)에서 만든 스마트폰 운영체제(OS, Operating System)이자 다양한 앱을 설치하여 실행할 수 있도록 구성된 .. 2022. 4. 13.
[안드로이드] 4대 컴포넌트 : 액티비티, 서비스, 콘텐츠 프로바이더, 브로드캐스트 리시버 안드로이드 컴포넌트 컴포넌트(Component)란 안드로이드 애플리케이션을 생성할 수 있도록 제공되는 구성 요소(building block)이다. 각각의 컴포넌트는 다른 진입점을 통하여 애플리케이션에 들어간다. 안드로이드 애플리케이션은 4개의 핵심 컴포넌트를 가지고 있으며 각 컴포넌트의 객체를 생성하고 제거하는 라이프사이클의 구조도 각각 다르다. 1. 액티비티(Activity) 1.1. 액티비티의 개요 액티비티는 사용자에게 보이는 단일 화면으로, android.app.Activity 클래스를 상속받아 생성하며 사용자와 상호 작용하는 UI를 제공한다. 액티비티는 시스템으로부터 애플리케이션이 시작되는 진입점 역할을 수행하며 안드로이드 애플리케이션은 1개 이상의 액티비티로 구성되어 있다. 액티비티는 화면에 표.. 2022. 4. 13.
[안드로이드][에러 처리] IllegalStateException: Can not perform this action after onSaveInstanceState IllegalStateException : 메서드가 불법적이거나 부적절한 시간에 호출되었음을 알립니다. java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 재현 경로: Fragment의 onStop()에서 transacntion을 실행했을 때 위와 같은 Runtime Error가 발생이 된다. 원인: onSaveInstanceState()이 호출된 이후에 Fragment 전환이 발생한다면, onSaveInstanceState()을 통해 결정되는 복구 시점과 다르기에 해당 FragmentTransaction에 대해서는 복구할 수 없게 돼버립니다. 만약 이런 상황이 발생한다면 사용자 경험(UX)을 해치는 .. 2022. 4. 13.
728x90