전체 글

개발기록 / 공부한 내용을 정리하는 블로그
안드로이드는 앱 간의 데이터 이동을 위해 OS 차원에서 클립보드를 지원하고 있다. 클립보드를 이용해 공유할 수 있는 데이터 포맷은 다음과 같다. 텍스트 : 단순 문자열. URI : 데이터의 위치를 가리키는 URI. 실제 데이터를 제공하려면 ContentProvider를 구현해야 한다. Intent : 앱 실행 명령과 관련된 데이터. HTML 텍스트 : HTML 형태의 서식있는 문자열. 4.1(API 16)부터 추가되었다. 각 데이터 타입에 따라 MIME 타입을 지정함으로써, 클립보드로부터 데이터를 받는 애플리케이션은 이 MIME 타입을 읽어서 데이터가 무슨 타입인지 판별할 수 있다. 클립보드는 저장 공간이 한개 뿐이므로, 한번에 하나의 데이터만 교환할 수 있다. 클립보드에 새로운 데이터가 들어오면, 기존..
· Kotlin/Util
Kotlin 소수 판별 함수 private fun isPrime(n: Int): Boolean { if (n == 0 || n == 1) return false var i = 2 while (i * i
· Kotlin/Basic
자바 8에서는 컬렉션에 포함된 자료들을 손쉽게 다룰 수 있도록 스트림(stream) 기능을 제공. Kotlin은 스트림 대신 이와 유사한 역할을 하는 함수들을 표준 라이브러리에서 제공하며, 확장 함수 형태로 제공된다. 변환 map() 컬랙션 내 인자를 변환하여 반환할 때 사용 fun main(args: Array) { val cities = listOf("Seoul", "Tokyo", "London") // SEOUL, TOKYO, LONDON cities.map { city -> city.toUpperCase() }.forEach { println(it) } // 5, 5, 6 cities.map{city -> city.length}.forEach { println(it) } } mapIndexed()..
· Kotlin/Basic
Closure Function Closure(클로저)의 개념 람다식으로 표현된 내부 함수에서 외부 범위에 선언된 변수에 접근할 수 있는 개념 이 외부 변수를 람다식 안의 외부 변수는 값을 유지하기 위해 람다식이 포획(Capture)한 변수라고 함 클로저에서는 포획한 변수는 참조가 유지되어 함수가 종료되어도 사라지지 않고 함수의 변수에 접근하거나 수정할 수 있게 해 줌 - 기본적으로 함수 안에 정의된 변수는 지역 변수로서 스택에 저장되어 있다가 함수가 끝나면 같이 사라짐 장점 내부 람다식에서 외부 함수의 변수에 접근하여 처리할 수 있기 때문에 효율이 높음 완전히 다른 함수에서 변수에 접근하는 것을 제한할 수 있음 조건 final 변수를 포획한 경우, 변수 값을 람다식과 함께 저장한다 final이 아닌 변수..
오류가 시스템 레벨에서 발생한다면, 예외(Exception)는 개발자가 구현한 로직에서 발생한다. 예외는 발생할 상황을 미리 예측하여 처리할 수 있다. 예외는 개발자가 처리할 수 있기 때문에 예외를 구분하고 그에 대한 처리 방법을 명확히 알고 적용하는 것이 중요하다. Exception 종류 내용 ClassNotFoundException 클래스를 찾지 못함 CloneNotSupportedException 인터페이스를 미구현함 IllegalAccessException 클래스에 접근 불가함 InstantiationException 추상 클래스, 인터페이스를 인스턴스화 하고자 함 InterruptedException Thread가 중단됨 NoSuchFieldException 지정된 필드가 없음 NoSuchMet..
뒤로 가기 두번 클릭후 종료 구현중 Toast Message가 Test 단말기에서는 나오나 Emulator 에서는 나오지 않아 찾아보았다. 1. Device Manager에서 해당 Emulator의 데이터 지우기 (WipeData) 위 방법을 해보아도 Toast가 출력되지 않을시 아래 방법 실행 2. Tools > SDK Manager > SDK Tools > Android Emulator 설치 2번째를 해보니 Toast 출력 확인
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..
bumjae
Android Technote