Reactive Stream규격의 Kotlin 구현. Asynchronouse cold stream. Asynchronouse 하게 동작하는게 코루틴과 찰떡으로 돌아간다. 데이터 스트림이라고 한다면, 한쪽(Producer)에서는 소스 데이터를 계속 넣어주고 이 데이터들이 일련의 파이프라인을 따라 처리된 후, 맞은편(Consumer)에서 데이터를 빼가는 모습을 생각할 수 있다. 주로 파일처리등의 대용량 데이터의 처리에 사용되지만, 이미 안드로이드에서 범용적으로 사용하고 있듯, 비동기적으로 데이터를 처리하는 reactive programming 형태에서는 데이터의 크기와 상관없이…
[태그:] 안드로이드
안드로이드
Kotlin: Coroutines
coroutine을 알기위해선 asynchronous process의 역사를 간략이 알아야할 필요가 있다. async process, 즉 비동기 처리는 예전부터 필요한 경우들이 있다. 예를 들어 네트워킹, DB 작업등은 응답에 시간이 걸리기 때문에, 메인쓰레드에서 처리하게되면 그동안 프로그램이 멈추게된다. 그래서 쓰레드를 이용한 처리방식이 일반적이다. 문제는 쓰레드라는 놈이 다루기 너무 까다롭다는데 있다. 일단, 별도의 context를 갖기 때문에, 쓰레드를 생성하는 일은 부하가 크게 걸리는…
Android: Screen Rotation 알아내기
보통 화면의 회전을 처리하는 경우는 화면이 portrait인지 landscape인지 여부이다. 그러나, 나침반처럼 회전방향에 따라 바늘 각도를 다르게 계산해야 하는 경우라면, 4방향의 회전방향을 모두 알아야한다. 여기서는 다루지 않지만 사족을 달자면, 나침반은 화면이 뒤집혀 좌표계가 뒤집히는 경우까지 고려해야 한다. 화면의 현재 회전상태를 알아내는 방법 화면의 회전은 UI영역이고, Activity에서 처리해야 함을 유추할 수 있다. Fragment가 아니라 Activity인 이유는, Fragment가…
Kotlin: 스코프 함수들(Scope functions) let, run, with, apply, also
작년에 작성했던 글인데, 제대로 이해하지 못하고 썻던 글이라, 다시봐도 무슨말인지 모르겠더라. 이제 좀 감이와서 다시 정리해 업데이트 한다. Kotlin만의 특징중 하나로 scope functions 라고 불리는게 있다. ‘let’, ‘run’, ‘with’, ‘apply’, ‘also’ 의 5가지가 그것이다. 객체 생성시, 사용하는 함수들인데, 자체적인 scope를 갖는 코드블럭을 사용해서 scope function이라 불린다. Kotlin 공식문서 참조. 공식문서의 예를 가져와보면 다음과 같다. Person…
Android : 무선 디버깅 사용하기
에뮬레이터가 되긴 하지만, 컴터가 좀 구려서 바로 이전에 쓰던 폰을 테스트 시료로 사용중인데, 이놈이 USB포트 접촉불량이 좀 있다. USB선을 건드리지 않고 쓰는게 너무 스트레스라 찾아보니 역시나 adb를 리모트로 연결하는 법이 있네. 안드로이드 스튜디오에서도 인식해서 무지 편해짐. 1. Android 11 이전 방법 참고로, android 11부터 무선 디버깅(wireless debugging)이 추가 됐다. 먼저 android 11 이전버전에서의 방법을 알아보자….