Android

    [안드로이드] 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..

    [안드로이드] Room

    Room 이란? Room은 Android Architecture Componet(AAC) 중 하나인 라이브러리이고 SQLite의 기능을 최대한 활용하는 동시에 데이터베이스를 원활하게 접근할 수 있도록 도와주는 ORM이다. Room의 주요 컴포넌트 데이터베이스: 데이터베이스 홀더를 포함하며 앱의 지속적인 관계형 데이터의 기본 연결을 위한 기본 액세스 포인트 역할을 합니다. @Database로 주석이 지정된 클래스는 다음 조건을 충족해야 합니다. RoomDatabase를 확장하는 추상 클래스여야 합니다. 주석 내에 데이터베이스와 연결된 항목의 목록을 포함해야 합니다. 인수가 0개이며 @Dao로 주석이 지정된 클래스를 반환하는 추상 메서드를 포함해야 합니다. 런타임 시 Room.databaseBuilder()..

    [안드로이드] MVC, MVP, MVVM 아키텍처 패턴

    아키텍처 패턴은 왜 쓰는 걸까? 위키 백과에 따르면 아래와 같은 이유가 있다. 아키텍처 패턴(architectural pattern)은 주어진 문맥 안에서 소프트웨어 아키텍처의 공통적인 발생 문제에 대한 일반적인, 재사용 가능한 해결책을 의미한다. 아키텍처 패턴은 소프트웨어 디자인 패턴과 비슷하지만 더 넓은 범위에 속한다. 조금 더 자세하게 알아보면 아래와 같은 이점이 있다. 코드의 이해도 증가 복잡한 구조의 단순화 다양한 에러에 대한 해결 방안 도출 용이한 유지보수 및 효율적인 코드 MVC 개요 MVC는 Controller로 모든 입력을 받고 이벤트가 발생한 Controller에 의해 모듈의 정의와 View의 용도가 결정된다. MVC의 장점 빠른 개발 속도와 코드의 이해도가 높다. 일단 view와 mo..

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

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

    [안드로이드] Invoke-customs are only supported starting with Android O (--min-api 26) 에러 해결 방법

    Invoke-customs are only supported starting with Android O (--min-api 26) 여러 라이브러리를 한번에 추가하다가 발생한 에러이다. 해결방법은 build.gradle(Module:.app)에 아래 코드를 추가해주면 해결된다. android { ..// compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }