안드로이드 개발/개념 7

OAuth 란?

OAuth는 3자간 인증을 위한 프로토콜로 소셜로그인시 사용된다. 주요 개념 역할 설명 자원 소유자 (Resource Owner) 보호 자원에 접근 권한을 부여할 수 있는 개체 (서비스 이용자) 자원 서버 (Resource Server) 보호 자원에 대한 서비스 API를 제공하는 서버 예) 예금 조회, 이체, 결제, 주문 등 권한 서버 (Authorization Server) 자원 접근 권한을 위임 및 관리하는 서버 클라이언트 (Client) 자원 서버에서 보호 자원을 요청하고 관련 서비스를 제공하는 앱 접근 토큰 (Access Token) 자원에 대한 접근 권한을 자원 소유자가 인가하였음을 나타내는 자격증명 1. 사용자 (Resource Owner)가 서버에게 로그인을 요청한다. 2. 서버는 사용자에게..

[Android] 싱글톤 패턴이란?

어떤 클래스의 인스턴스는 오직 하나임을 보장하며, 이 인스턴스에 접근할 수 있는 전역적인 접촉점을 제공하는 디자인 패턴이다. 애플리케이션의 시작부터 종료까지 한 번의 생성으로 고정된 메모리 영역을 가지기 때문에 메모리를 효율적으로 사용 할 수 있다. 싱글톤의 인스턴스는 전역적으로 사용되기 때문에 다른 클래스의 인스턴스들이 데이터를 공유 변경이 가능하다는 장점이 있다. 쉽게 말하면 한 번의 선언으로 모든 클래스에서 전역으로 사용 가능한 필드나 메서드를 만드는 것. ( 아무데서나 접근 가능한 필드나 메소드 ex)유저 로그인 아이디 ) 자바와 코틀린의 싱글턴 패턴 자바에서는 인스턴스 변수를 선언하고 생성자 및 정적 메서드를 추가하는 작업을 추가한다. 코틀린에서는 단 한 줄로 처리된다 ◈ 자바 코드 public..

(Android) 의존성이란?

Dependency Injection ↓ ↓ 의존성 주입 의존성이란? 코드에서 두 모듈간의 연결 두 클래스 간의 관계 의존성이 크다는 것은 Coupling(결합도)이 높다는 것 의존성이 미치는 영향 하나의 모듈이 변경됨에 따라 결합된 다른 모듈이 영향을 받게 된다. 두개의 모듈일때는 괜찮지만 최악의 경우 모듈이 100 ~1000개 라면 하나의 모듈 변경으로 인해 n-1개의 모듈이 영향을 받는다. 나머지 모듈이 제대로 동작하는지에 대한 검증이 필요할 수도 있다. 그럼 시간과 비용도 그만큼 + a 되는 것 결합도가 높으면 독립성이 떨어진다. 반대로 결합도가 낮으면 독립성이 높아진다. 의존성 주입의 목적(테스트, 유지보수, 재사용성) 가장 큰 목적은 모듈을 Testable 하게 만들 수 있다는 점이다. 독립된..

[Android] Room을 이용한 DB 저장방법

프로젝트 내부에 DB를 저장할 수 있게 도와주는 Room 라이브러리를 다루어 보겠습니다. 할일을 입력하여 추가 한 후 앱을 종료하고 다시 실행해도 남아 있을 수 있도록 코딩해보겠습니다. 1. xml 제작 2. 필드를 선언해줄 Todo class 생성 package com.example.room_exam; import androidx.room.Entity; import androidx.room.PrimaryKey; @Entity public class Todo { @PrimaryKey(autoGenerate = true) // id 값을 자동으로 1씩 증가시켜 입력해줌 private int id; private String title; public Todo(String title) { this.title ..

[Android] 안드로이드 아키텍처 컴포넌츠 AAC

ACC란? Android Architecture Components 의 약자로서 테스트와 유지보수가 쉬운 앱을 디자인할 수 있도록 돕는 라이브러리의 모음입니다. 앱의 수명 주기를 관리하고 새로운 수명 주기 인식 구성요소로 활동과 프래그먼트 수명 주기를 관리 할 수 있습니다. 구성요소로 Livedata , ViewModel, Room 이 존재합니다. ViewModel 앱의 Lifecycle을 고려하여 UI 관련 데이터를 저장하고 관리하는 컴포넌트 Ui Controller로부터 Ui 관련 데이터 저장 및 관리를 분리하여 ViewModel이 담당하도록 하면 다음과 같은 문제를 해결 가능 합니다. 안드로이드 프레임워크는 특정 작업이나 완전히 통제할 수 없는 기기 이벤트에 대한 응답으로 UI Controller를..

안드로이드의 인텐트(Intent)란?

인텐트는 무엇인지 알아보겠습니다. 인텐트는 컴포넌트 간의 통신을 위해 만들어진 메신저입니다. 인텐트의 사용 예로는 액티비티긴 화면 전환을 들 수 있습니다. 즉 인텐트는 컴포넌트 A가 컴포넌트 B를 호출할 때 필요한 정보를 담고 있으며, 이 정보에는 호출되는 컴포넌트 B의 이름이 명시적으로 표시되기도 하고, 속성들이 암시적으로 표시되기도 합니다. 또한 호출된 컴포넌트 B가 호출한 컴포넌트 A로 어떠한 결과를 전달할 때도 인텐트가 사용됩니다. 어떠한 컴포넌트를 호출하느냐에 따라서 사용되는 대표적인 메소드는 다음과 같은 것들이 존재합니다. startActivity() : 새로운 액티비티 화면을 띄울 때 사용 startService(),bindService() : 서비스와 관련된 메소드 broadcastInte..

안드로이드 4대 컴포넌트란?

안드로이드에는 4대 컴포넌트가 존재합니다. 액티비티(Activity) / 서비스(Service) / 브로드캐스트 리시버(Broadcast Receiver) / 콘텐트 프로바이더 (Content Provider) 각 컴포넌트들은 하나의 독립된 형태로 존재하며, 정해진 역할을 수행합니다. 또한 각 컴포넘트들은 인텐트(Intent)라는 일종의 메시지 객체를 사용하여 상호 통신을 합니다. 안드로이드 3.0 부터는 프래그먼트가 추가되었습니다. 1.액티비티(Activity) 액티비티는 UI화면을 담당하는 컴포넌트입니다. 안드로이드 어플은 반드시 하나의 액티비티를 가지고 있어야 합니다. 각 애티비티는 매니페스트파일에 등록 되어 있어야 합니다. 액티비티는 하나 이상의 view를 가질 수 있습니다. 2.서비스(Servi..