안드로이드

    [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가 대신..

    [안드로이드] 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. 파일에 접근하여 필요한 동작을 구현한다.