android

    [Android] Context

    Context는 어플리케이션 환경에 대해 글로벌 정보를 갖는 일종의 인터페이스로써 android 시스템에서 구현체를 제공하는 추상 클래스로 어플리케이션 별 리소스 및 클래스 접근에 사용되며, Actvity 실행, BroadCast, Intent 수신 등 어플리케이션 수준의 작업에 사용된다. Context의 역할을 요약해보면 아래와 같다. 어플리케이션의 현재 상태를 나타낸다. 액티비티와 어플리케이션의 정보를 얻기 위해 사용할 수 있다. 리소스, 데이터베이스, shared preference 등에 접근하기 위해 사용한다. 액티비티와 어플리케이션 클래스는 Context 클래스를 확장한 클래스다. Context는 여기서 두 종류로 나눠 볼 수 있다. - Application Context - Activity C..

    [Android] Mac M1 Room 라이브러리 에러

    M1을 탑재한 맥북프로가 출시되고 나서 안드로이드의 Room 라이브러리로 인해 프로젝트가 빌드되지 않는 현상이 발생했다. 다행히 구글에서 해당 버그를 수정한 버전이 있어 stable 버전은 아니지만(현재는 Stable함) 해당 에러를 고칠 수 있었다. def room_version = "2.4.0-alpha03" 2.4.0-alpha03 버전 이상을 사용하면 에러를 해결할 수 있다. https://developer.android.com/jetpack/androidx/releases/room

    [안드로이드] Android Architecture Components(AAC)의 LiveData

    개요 LiveData는 Activity, Fragment, Service 등 다른 앱 구성요소의 라이프사이클을 인식하는 데이터 클래스다. 라이프사이클 인식을 통해 LiveData는 Observer 클래스로 표현되는 관찰자의 활성 상태를 구분하고 업데이트 정보를 알린다. 관찰자가 활성화가 된 상태는 STARTED 또는 RESUMED 상태를 활성 상태로 간주한다. 또한 Activity나 Fragment가 LiveData 객체를 안전하게 관찰할 수 있고, 이들의 수명 주기가 끝나는 즉시 수신 거부되어 쓸데없는 메모리 누수를 걱정하지 않아도 되므로 유용하다. 장점 1. UI와 데이터 상태의 일치 보장 LiveData는 데이터가 변경됨과 동시에 Observer 객체에 통지함. 데이터 변경시 Observer가 대신..

    [안드로이드] Android Architecture Components(AAC)의 ViewModel

    개요 ViewModel 클래스는 수명 주기를 고려해 UI와 관련된 데이터를 저장하고 관리한다. ViewModel 클래스를 사용하면 화면 회전과 같은 인스턴스 제거 → 재생성 과정을 거쳐도 데이터를 유지할 수 있다. 꼭 ViewModel로 데이터를 유지시키지 않아도 대안은 있긴 하다. 예를 들면 앱의 Activity들 중 하나에 사용자 목록이 포함되어 있는데, 구성이 변경되어 Activity가 다시 생성되면 새 Activity가 사용자 목록을 다시 가져와야 하는데, 데이터가 단순한 경우 Activity의 onSaveInstanceState() 메소드를 사용하여 onCreate()의 번들에서 데이터를 복원할 수 있다. 하지만 이 방법은 사용자 목록이나 비트맵과 같은 대용량의 데이터가 아니라, 직렬화했다가 다..

    [안드로이드] Module 수준의 Gradle

    compileSdkVersion 어떤 안드로이드 SDK 버전으로 앱을 컴파일할 건지 정할 수 있다. 컴파일 시에만 적용되고 런타임에는 영향을 주지 않는다. 해당 버전의 안드로이드 API를 사용할 수 있다는 것을 의미한다. 코드에서 import문으로 참조되는 클래스나 메소드를 참조할 때 어떤 버전의 SDK에서 참조할지 결정한다. targetSdkVersion minSdkVersion 이상에서의 특정 기능을 사용을 위함. 실제 컴파일에는 관여하지 않음. 현재 개발 시 이용하고 있는 라이브러리 SDK 버전. 대부분 최신 버전을 지정하여 사용하는것이 좋다. 지정한 버전까지 앱의 안정성을 보장한다는 의미. minSdkVersion 해당 앱을 몇 버전의 스마트폰까지 지원할 것인지에 대한 설정. application..

    [안드로이드] Androidx에서 File 공유하기

    1. xml 디렉터리를 만들고, file_provider 파일을 만든다. 파일 내용 2. Manifiest 파일에 해당 내용을 추가한다. 추가할 내용 ..... 3. 파일에 접근하여 필요한 동작을 구현한다.