Android Permission 정리
Android 6.0 Marshmallow(API 23) 이전에는 AndroidManifest.xml에 필요한 위험 권한을 선언해놓고, 앱을 설치할 때 한 번에 권한을 획득하는 방식이었다. 그러나 6.0부터는 런타임에 위험 권한을 요청해야 한다. 기기에서 Android 5.1 이하를 실행 중이거나, 또는 앱의 targetSdkVersion이 2...
Android 6.0 Marshmallow(API 23) 이전에는 AndroidManifest.xml에 필요한 위험 권한을 선언해놓고, 앱을 설치할 때 한 번에 권한을 획득하는 방식이었다. 그러나 6.0부터는 런타임에 위험 권한을 요청해야 한다. 기기에서 Android 5.1 이하를 실행 중이거나, 또는 앱의 targetSdkVersion이 2...
Anko등을 사용하지 않는 일반적인 경우라면 layout은 xml을 이용해서 만들기 때문에, xml layout을 불러와 실제로 앱에 그려주는 작업(View로 만드는 작업)이 필요한데 이를 inflate라고 한다. val elementView = inflater.inflate(R.layout.layout\_list\_element, parent, f...
https://developer.android.com/guide/platform/index.html?hl=ko#art Android는 모바일 기기를 위한 Linux 기반 커널과 미들웨어, 핵심 애플리케이션들을 포함한 소프트웨어 스택이라고 볼 수 있다. ART, Android Runtime https://developer.android.com/...
https://developer.android.com/guide/components/fundamentals.html 안드로이드의 메모리 관리 관점에서 프로세스 / 어플리케이션 관리 Android 앱은 일단 기기에 설치되고 나면 각자 자체적인 보안 샌드박스 안에 존재합니다. Android 운영 체제는 멀티유저 Linux 시스템으로, 여기서 각...
변성 (variance) List는 클래스(기저 클래스)이고, List<Int>는 타입이다. 타입 A의 값이 필요한 모든 장소에 타입 B의 값을 넣어도 아무 문제가 없다면 B는 A의 하위 타입(subtype)이다. 하위 클래스와 하위 타입은 미묘한 차이가 있다. A?와 A는 같은 클래스에 속하지만, A는 A?의 하위 타입이고 그 역은 성립...
타입 파라미터 소거 [Kotlin] as와 타입 캐스팅. 런타임 에러. 타입 파라미터 소거(erasure) 런타임 타입 검사 : inline + reified (실체화한 타입 파라미터) inline fun <reified T> isA(value: Any) = value is T >>> isA<String>("...
filterNotNull() : 널이 아닌 값만 추리고 싶은 경우 >>> val l = listOf(1, 2, null, 4, 5) >>> println(l.filterNotNull()) [1, 2, 4, 5] Note ) 걸러내고 난 결과 컬렉션의 타입은 null이 제거되었으므로 List<Int> 타입...
코틀린에서는 원시 타입과 참조 타입(래퍼 타입, 포인터 변수)을 별도 타입으로 따로 구분하지 않는다. 예를 들어 java의 int와 Integer 같이 구분하지 않고, Int 하나로 쓴다. 널이 될 수 없는 타입 은 컴파일 시 알아서 원시 타입으로 표현할 수 있는건 원시 타입으로 표현해주고, 메소드를 호출하는 등 래퍼 타입이어야 하는 경우 ...
최근 null에 대한 접근 방법은 런타임에 발생하는 NPE를, 컴파일 타임으로 옮기는 것이다. 널이 될 수 있음과 없음에 대한 모든 검사는 컴파일 타임에 수행되기 때문에, 실행 시점에는 널이 될 수 있는 타입과 널이 될 수 없는 타입의 객체가 같아진다. 단, @NotNull 애너테이션이나 Intrinsics.ch...
수신 객체 지정 람다 with : prefix없이 접근하고 싶을 때 with는 원래 파라미터가 2개인 함수다. 그러나 두 번째 인자인 람다를 밖으로 빼서 원래 언어가 지원하는 구문인 것 처럼 사용할 수 있다. 보기 깔끔해진다. with의 람다 내에서는 전달된 객체에 prefix없이 접근할 수 있다. fun alphabet(): String { ...