GDG Korea Android Weekly - 2월 3주차
GDG Korea Slack 내
#android
채널에서 오고간 주제를 정리한 포스트 입니다. 가입은 여기에서 하실 수 있습니다.
Android N
Android N
의 출시 일정과 몇몇 기능이 공개되었습니다. 현재까지 확정된 사항은 다음과 같습니다.
출시 일정
5월 18일, 구글 I/O 2016 키노트 후에 출시됩니다.
안드로이드 5.0 때와 유사하게 키노트에서 새 버전을 발표하고, 발표 직후 Developer Preview SDK와 팩토리 이미지를 공개하는 방식으로 진행됩니다.
멀티윈도우
안드로이드 6.0에 숨겨진 기능으로 존재하고 있던 멀티윈도우 모드가 공식으로 추가됩니다.
기존에 일부 제조사 단말기에서만 지원하던 모드였는데, 이미 출시되어 있는 앱들에 대한 호환성은 어떻게 처리될 지 궁금합니다.
태블릿 지원 강화
내비게이션 버튼 조정, 해상도(DPI) 변경, 미니 앱(Mini apps; 삼성전자 단말기의 멀티윈도우 모드 중 한 모드)을 지원한다고 합니다.
OpenJDK
Java API를 OpenJDK 기반으로 변경한다고 합니다.
오라클과 계속 소송을 진행하고 있는 입장에서 어쩔 수 없이 선택한 길로 보이는데, 이로 인해 다른 문제가 발생하지는 않을지 다소 걱정되네요.
아직 확정되지 않고 루머로만 알려져 있는 내용들에 대해선 아래 링크를 참조하세요.
Android N features: everything confirmed, rumored and expected Link
Vulkan (3D Graphics)
OpenGL의 차세대 버전인 Vulkan
이 출시되었습니다. 안드로이드를 지원하지만, 아직 플랫폼에서 사용할 수 있는 API는 공개되지 않았습니다.
자세한 내용이 궁금하신 분은 공식 사이트를 확인해 보는 것을 추천합니다.
이 벌칸 아닙니다… By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=19324388
터치위즈의 성능 문제 재점화 (갤럭시 노트 5)
삼성전자 안드로이드 단말기에 들어가 있는 터치위즈(TouchWiz)
인터페이스는 첫 출시부터 낮은 퍼포먼스로 많은 사람들의 질타를 받아왔습니다.
삼성도 이 같은 반응을 인식했는지 기존 터치위즈의 경량화 버전인 TouchWiz Lite
를 최신 단말기에 적용하기 시작했지만, 성능이 그다지 크게 향상되지 않았습니다.
XDA 포럼에는 삼성의 최근 플래그십인 갤럭시 노트 5에서도 여전히 성능 문제가 있다는 글이 아래 영상과 함께 올라왔습니다.
This is TouchWiz Lag — And it Better Not Show its Face in the S7 Link
갤럭시 S6은 백그라운드 작업을 극도로 제한하는 메모리 정책으로 인해 많은 사용자들의 원성을 산 전력이 있습니다.
하드웨어의 성능을 향상시켜 소프트웨어의 성능을 커버하는 방식이 아닌, 근본적으로 소프트웨어 성능을 향상시키지 않는 한 차후 출시되는 단말기에서도 동일한 문제가 발생할 수 밖에 없습니다.
한시라도 빨리 소프트웨어 성능 문제를 해결했으면 좋겠습니다.
RxJava/RxAndroid를 사용하여 반복되는 터치 이벤트 차단하기
터치 이벤트에 대응하는 동작을 구현할 때, 너무 짧은 시간 내에 반복적으로 이벤트가 발생하지 않도록 처리해야 할 경우가 있습니다.
RxJava의 throttleFirst
연산자를 사용하면 이를 쉽게 구현할 수 있습니다. 다음은 throttleFirst
의 동작 방식을 보여줍니다.
throttleFirst
는 일정 시간 단위 내에서 가장 첫 번째로 발생한 이벤트만 출력합니다.
단, 기본적으로 computation
스케쥴러에서 발생하는 이벤트를 기준으로 필터링을 수행하므로, 터치 이벤트와 같이 메인 쓰레드에서 발생하는 이벤트를 처리하려면 인자로 AndroidSchedulers.mainThread()
를 추가해 주어야 합니다.
다음 코드는 RxBinding
과 throttleFirst
를 이용하여 1초에 하나의 터치 이벤트를 받는 Subscription을 구성한 예를 보여줍니다.
Subscription s = RxView.clicks(view)
.throttleFirst(1, TimeUnit.SECONDS, AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
추가 정보는 공식 레퍼런스 문서를 참고하세요.
DroidKaigi 2016
일본에서 2월 18일~19일 총 2일간 DroidKaigi
라는 행사가 개최되었습니다.
안드로이드 애플리케이션 단 부터 플랫폼까지 다양한 주제에 걸쳐 수많은 세션들이 진행되었는데요, 일부 영어로 진행된 세션도 있으니 관심 있으신 분들은 세션 목록을 참조하시면 좋을 것 같습니다.
세션 제목 옆의 문서 아이콘을 발표 자료를 받을 수 있습니다. 발표 내용이 궁금하신 분들은 발표 자료를 받아 확인해보시면 좋겠습니다.
Android Weekly
Android Weekly #193에 소개된 글 중 읽어 볼 만한 글을 소개합니다.
Meaningful Motion with Transitions and Circular Reveal
Shared Element와 Circular Reveal 애니메이션을 사용하여 ‘Meaningful motion’을 구성하는 방법에 대해 알아봅니다.
Mariusz Brona shows you a cool transition by using the combination of circular reveal animation, fade animation and shared element transition. Link
Understanding Android’s LayoutInflater.inflate()
LayoutInflater.inflate()
메서드, 자주 사용하는 만큼 구체적인 동작 원리에 대해 알아보면 많은 도움이 될 것 같습니다.
It’s easy to get comfortable with boilerplate setup code, so much so that we gloss over the finer details. Sean Farrell has experienced this with LayoutInflater and the way it inflates Views inside Fragment’s onCreateView() method. Link
Intercepting everything with CoordinatorLayout Behaviors
Design Support Library에서 추가된 CoordinatorLayout
을 구성하는 핵심 요소인 Behavior
에 대한 자세한 설명과, 기타 CoordinatorLayout
에서 사용할 수 있는 기능들을 소개합니다.
By attaching a Behavior to a direct child of CoordinatorLayout, you’ll be able to intercept touch events, window insets, measurement, layout, and nested scrolling. Link
Retrolambda 사용시 lint 오류 해결하기
안드로이드에서 람다 문법을 사용할 수 있게 해 주는 Retrolambda
를 사용하면, 안드로이드 lint
툴을 사용한 정적 분석 중 오류가 발생한다고 합니다.
이에 대한 임시 해결책으로, 각 모듈 내의 build.gradle
내에 선언되어 있는 buildscript
섹션을 프로젝트의 build.gradle
으로 옮기면 된다고 합니다.
UnsupportedOperationException: Unknown ASTNode child: LambdaExpression Link
보다 자세한 내용은 위 링크에 기술되어 있으니, 이 문제로 해결 방법을 찾고 계시던 분들께 도움이 되었으면 좋겠습니다.
대화에 직접 참여하고 싶으신가요? GDG Korea Slack 내
#android
채널을 방문하세요. 아직 가입하지 않으셨나요?