Android 서비스는 메인 스레드에서 실행
https://medium.com/@joongwon/android-service%EC%99%80-thread%EC%9D%98-%EC%B0%A8%EC%9D%B4-a9175016450
서비스는 스레드도 아니고, 별도의 프로세스도 아닙니다.
HashMap 자료구조
http://kwseo.github.io/java/hash/map/2015/11/09/hash-map.html
Map 을 구현하기 위해 해시를 사용한다. 해시 테이블은 키와 값 쌍으로 이루어진 구조로 전근 시 O(1) 시간을 소비하여 속도가 아주 빠르다. 키는 중복이 허용되지 않고, 값은 중복이 허용된다.
Composite 패턴
http://copynull.tistory.com/135
http://www.incodom.kr/%EC%BB%B4%ED%8F%AC%EC%A7%80%ED%8A%B8_%ED%8C%A8%ED%84%B4
객체를 트리 구조로 구성하고 개별 객체와 복합 객체(Composite) 가 구성된다.
Client 에서는 두 객체를 동일하게 사용할 수 있다.
Client 는 Component 의 인터페이스, 추상클래스를 상속받으며 해당 메소드 중 연관된 메소드만 재정의한다
상속의 위험성
http://egloos.zum.com/gyumee/v/3200829
http://en.wikipedia.org/wiki/Diamond_problem
다이아몬드 문제가 있을 수 있으며, 상속을 고려하여 구성된 객체가 아니라면 캡슐화가 깨져 부모와 자식 사이에 강한 결합이 생길 가능성이 있다.
객체지향언어의 4대 특징
http://sesok808.tistory.com/31
1. 추상화 : 공통적인 특징을 뽑아냄
2. 캡슐화 : 데이터 구조와 데이터를 다루는 방법을 결합하고 데이터를 기능이라는 캡슐로 보호
3. 상속성 : 하나의 클래스의 특징을 그대로 다른 클래스가 물려받는 것
4. 다형성 : 하나의 메소드와 클래스가 이걸을 이용하는 방법에 따라 다양한 방법으로 동작하는 것
서비스 생명주기
https://developer.android.com/guide/components/services.html?hl=ko
서비스에서 Bind 와 Start Service 를 섞어쓰지 않는 이유
http://rosaria1113.tistory.com/238
bindService 가 된 상태에서 startService 를 하게 되면 이전(bindService)는 무시되고 새로운 상태로 변경된다.