enum 의 장점
http://www.nextree.co.kr/p11686/
간결한 코드로 인해 개발 및 유지보수가 용이하게 합니다.
일반 클래스와 다르게 switch case 문에서도 사용이 가능하며, final static 으로 정의된 경우의 동일 이름의 중복이 문제가 될 수 있는데 이런 부분을 해결할 수 있습니다.
Volatile vs Synchronized
http://kwanseob.blogspot.kr/2012/08/java-volatile.html
https://stackoverflow.com/questions/3519664/difference-between-volatile-and-synchronized-in-java
Volatile 을 이용한 연산은 Java 1.5 버전 미만과 이상에 따라서 나뉩니다.
1. 1.5 미만에서는 변수 자체에 대해서 최신의 값이 읽히거나 쓰여진다.
2. 1.5 이상에서는 변수의 접근까지의 대해 모든 변수들의 상황이 업데이트 되고, 변수가 업데이트 된다.
반면 synchronized 는 synch 블락 전까지의 모든 연산이 업데이트 되고 synch 블록 안의 연산이 업데이트되게 됩니다.
즉, volatile 은 변수에 한해서만 동기화 해주는 도구이며, synchronized 는 작업에 대해서 동기화를 지원해주는 도구입니다.
Java UnitTest
http://www.nextree.co.kr/p11104/
자바에서는 JUnit 단위 테스트 Framework 를 지원합니다.
기본적으로는 assertEquals(예상 값, 실제 값) 으로 사용
View dispatchTouchEvent
https://moka-a.github.io/android/touch-event-transfer/
http://dktfrmaster.blogspot.kr/2016/09/blog-post_26.html
dispatchTouchEvent 는 단지 뷰를 탐색해 나가는 기능을 위한 함수이고, 이벤트를 처리하려면 onTouchEvent 를 재정의하여 처리하여야 한다.
이벤트 발생 시에 각 레이어의 dispatchTouchEvent 가 가장 먼저 호출된다. 역할은 하위 레이어의 dispatchTouchEvent 를 호출하고 하위 레이어가 터치 이벤트를 처리했는지 결과를 받아서 처리하지 않은 경우에 자기 자신의 이벤트 처리 메서드(onTouch, onTouchEvent) 로 이벤트를 보낸다. 그리고 이벤트 처리 여부를 상위 dispatchTouchEvent에 리턴한다.
Dalvik 과 ART 의 차이
http://naxian.tistory.com/m/36
http://charlie0301.blogspot.kr/2014/02/dalvik-art.html
Dalvik 은 JIT "Just-In-Time" 방식으로 코드를 사용할 때, 컴파일하며
ART는 AOT "Ahead-Of-Time" 방식으로 코드를 컴파일 해놓고 사용하는 방식
실행 시 컴파일해서 사용하는 Dalvik 은 실행 시간 및 성능에서 단점을 가지고, 설치 시간에는 ART 가 단점을 가짐
Android N 변경사항
https://news.realm.io/kr/news/android-nougat/
- 멀티 윈도우
- 알림창 업데이트
- 배터리 최적화, 데이터 절감 기능
개발 측면
- 프로파일 가이드 JIT/AOT 컴파일
- 더 나은 도즈 모드 (배터리 절약)
- 백그라운드 최적화
- TextureView 대신 SurfaceView 권장 (배터리 소모 최적화)
- 인스턴트 앱
- ART 가 AOT + JIT 로 변경
- 멀티 윈도우
안드로이드 런타임 퍼미션
Android 6.0 마시멜로우부터 앱에서 해당 권한이 필요할 때마다 사용자로부터 권한을 허가받도록 변경되었습니다. 그리고 권한을 허가했더라도 설정을 통해서 권한을 허용/거부를 할 수 있습니다.
안드로이드 Memory Leak
- 앱의 상태와 관계없이 존재하고 액티비티에 참조로 유지하는 프로세스 전역 정적 객체에 의해서 발생
- 액티비티에서 강한 참조를 가진 스레드가 액티비티의 수명보다 오래 지속하는 경우
Strong Reference vs Weak Reference in Java