Android/Reference

안드로이드 개발을 하다 보면 Context를 자주 사용하게 된다. Context에 대해 정확히 알아보지도 않고 당연스레 사용하다가 이번에 찾아보았다. Context Application 환경에 대한 전역 정보를 접근하기 위한 인터페이스 추상 클래스이며 실제 구현은 Android 시스템에 의해 제공 이를 통해 application 특화 리소스나 클래스 뿐만 아니라 Activity 런칭, 브로드캐스팅, intent 수신 등과 같은 application-level operation을 위한 up-call에 접근이 가능 Context의 중요 핵심 애플리케이션의 현재 상태를 나타냄 Activity와 Application의 정보를 얻기 위해 사용할 수 있음 Resource, Database, Shared Prefer..
안드로이드는 앱 간의 데이터 이동을 위해 OS 차원에서 클립보드를 지원하고 있다. 클립보드를 이용해 공유할 수 있는 데이터 포맷은 다음과 같다. 텍스트 : 단순 문자열. URI : 데이터의 위치를 가리키는 URI. 실제 데이터를 제공하려면 ContentProvider를 구현해야 한다. Intent : 앱 실행 명령과 관련된 데이터. HTML 텍스트 : HTML 형태의 서식있는 문자열. 4.1(API 16)부터 추가되었다. 각 데이터 타입에 따라 MIME 타입을 지정함으로써, 클립보드로부터 데이터를 받는 애플리케이션은 이 MIME 타입을 읽어서 데이터가 무슨 타입인지 판별할 수 있다. 클립보드는 저장 공간이 한개 뿐이므로, 한번에 하나의 데이터만 교환할 수 있다. 클립보드에 새로운 데이터가 들어오면, 기존..
ViewPager2 View를 Paging 하는 매개체 즉, 사용하는 View를 슬라이드 쇼처럼 넘기게 할 수 있는 페이징 툴 ViewPager ViewPager2와 ViewPager ViewPager2는 AndroidX가 발표된 이후 새롭게 나온 ViewPager로 안드로이드 공식 문서에서도 아래와 같은 이유로 ViewPager보다 ViewPager2를 활용하여 페이징 하는 것을 권장 Horizontal Paging에서 Vertical Paging도 지원 가능(orientation 속성 활용) RTl(Right To Left) 페이징 지원(layoutDirection 속성 활용) notifyDatasetChanged로 Mutable Fragment Collection을 활용하여 동적 페이징 구현 주로 ..
안드로이드에서는 특정 동작을 위하여 권한이 필요 Android 6.0 (Marshmallow) 이전에는 앱 설치 시 모든 권한이 요청되었지만 이후 버전은 권한이 크게 일반 권한과 위험 권한으로 나뉨 일반권한 개인정보를 요청하지 않는 권한으로 앱 설치 시 권한을 요청하며, 대표적으로 인터넷 접근 권한, 와이파이 접근 권한, 블루투스 접근 권한 등이 있다. 위험 권한 개인정보를 요청하는 권한으로 그 기능이 동작할 때 권한을 요청하며, 대표적으로 카메라, 위치, 갤러리, 주소록 권한 등이 있다. 그룹 내 권한 허용 시, 동일 그룹 내 권한이 요청될 경우 자동으로 허용 Permission 요청 예시 Manifest 위치 권한 추가 FINE은 GPS 센서, COARSE는 네트워크로 위치를 측정 권한 요청 (Act..
단일 Activity에서 다수의 프레그먼트 사용 시 같은 Data를 이용할 경우가 많다. 프레그먼트 별로 ViewModel 객체를 생성할 경우 데이터 공유가 어렵다. 다수의 프레그먼트에서 Data를 공유해서 사용할 경우가 있다. 1개의 Activity에 2개의 Fragment가 있고, 각 Fragment는 text Data를 전송/수신한다고 할 시 Fragment1 : Text 변경 역할 Fragment2 : 수신후 보여주는 역할 ViewModel class MyViewModel : ViewModel() { val text = MutableLiveData() fun sendText(text: String) { text.value = text } } Fragment1 class Fragment1 : Fra..
기본적인 Jetpack Navigation + Bottom Navigation View의 경우에는 BottomNavigationView를 클릭할 때마다 Fragment가 재생성된다. 최초에만 Fragment가 생성되고 Fragment들을 Show/Hide 하는 방향으로 구현하려 한다. Custom Navigation FragmentNavigator Class 생성 Annotation인 @Navigator.Name("keep_state_fragment") 는 해당 내비게이터의 이름이고 graph.xml에서 와 같은 형태로 쓰일 TAG의 이름을 설정한다. 해당 FragmentNavigator의 navigate를 override 하여 재정의함으로써 기존의 프래그먼트 재생성 문제를 해결 @Navigator.Na..
LiveData의 setValue와 postValue 차이 LiveData는 Observer 패턴을 따르며 데이터의 변경이 일어날 때마다 콜백을 받아 원하는 동작을 실행가능 이때 LiveData의 값을 변경하게 해주는 함수가 바로 setValue()와 postValue() 두 함수 다 접근 제한자가 protected로, 외부에서 LiveData의 값을 변경불가 외부에서 값을 변경해주기 위해서는 LiveData를 상속받은 MutableLiveData를 사용 setValue() Main Thread에서 LiveData의 값을 변경 Main Thread에서 바로 값을 변경해주기 때문에 setValue() 함수를 호출한 뒤 바로 밑에서 getValue() 함수로 값을 읽어오면 변경된 값을 가져올 수 있다. Ma..
AAC 실습 이전에 포스팅했던 자료를 토대로 MVVM과 Room DB를 사용해 AAC기반의 RecyclerView를 구성해보는 실습을 하였다. Android AAC (Android Architecture Component) Android Architecture Component 테스트와 유지보수가 쉬운 앱을 디자인할 수 있도록 돕는 라이브러리의 모음 ViewModel 앱의 Lifecycle을 고려하여 UI 관련 데이터를 저장하고 관리하는 컴포넌트 UI Controller.. bumjae.tistory.com [Android] MVVM (Model, View, ViewModel) MVVM이란? MVVM( Model View ViewModel )은 Microsoft 설계자 인 Cooper & Peters에 ..
Android Architecture Component 테스트와 유지보수가 쉬운 앱을 디자인할 수 있도록 돕는 라이브러리의 모음 ViewModel 앱의 Lifecycle을 고려하여 UI 관련 데이터를 저장하고 관리하는 컴포넌트 UI Controller로부터 UI 관련 데이터 저장 및 관리를 분리하여 ViewModel이 담당하도록 하면 다음과 같은 문제를 해결할 수 있다. 안드로이드 프레임워크는 특정 작업이나 완전히 통제할 수 없는 기기 이벤트에 대한 응답으로 UI Controller를 제거하거나 다시 만들 수 있는데, 이런 경우 UI Controller에 저장된 모든 일시적인 UI 관련 데이터가 삭제됩니다. 단순한 데이터의 경우 onSaveInstanceState() 메서드를 사용하여 복구할 수 있지만 ..
bumjae
'Android/Reference' 카테고리의 글 목록 (2 Page)