일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- android architecture component
- 안드로이드 구글맵
- livedata
- C/C++
- 코틀린
- FLUTTER
- mfc
- Rxjava2
- C
- RxAndroid
- 안드로이드
- kodility
- flutter firestore
- Flutter TextField
- Kotlin
- Django REST
- Django REST Android
- NDK
- dart
- RxJava
- 프로그래머스
- UWP
- Android P
- C++
- Android
- 알고리즘
- Java
- android push
- Python
- Django REST framework
- Today
- Total
목록Java,Android (120)
개발하는 두더지
안드로이드 디바이스에서 백그라운드로 진입했을 때 작업을 수행하려면 서비스를 사용해야합니다.하지만 서비스를 사용할때 고려해야될 사항들이 있습니다. 1. 서비스는 프로세스가 계속 실행되고 있으므로 배터리 소모가 상당합니다.2. 마시멜로우 버전부터 잠자기 모드( doze mode )가 생겼습니다.3. 잠자기 모드는 누가버전에서 발전시키고 오레오 버전에서 더욱 강화되었습니다. 잠자기 모드는 유저가 디바이스 스크린을 끄고나면 네트워크, Sync, GPS, 알람, 와이파이 스캔 등을 비활성화 시켜버립니다.스크린을 켜거나 충전기에 연결할때 까지 이 상태가 유지되버립니다. 그리고 중요하지 않은 작업/앱을 종료시켜버림으로써 디바이스의 배터리를 절약하는 전략을 사용합니다. 그리고 오레오 버전으로 타겟팅된 앱이 백그라운드에..
[Effective Java 규칙18] 추상 클래스 대신 인터페이스를 사용하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 이미 존재하는 클래스를 개조해서 새로운 인터페이스를 구현하는 것은 간단하다. 자바 플랫폼에 Comparable 인터페이스가 추가된 이후, 많은 기존 클래스들이 Comparable을 구현하도록 개조되었다. 인터페이스는 믹스인(mixin)을 정의하는데 아주 유용한데 믹스인이 무엇이냐면어떤 주기능 A를 제공하는데 선택 기능 B를 제공하여 기능을 혼합할 수 있다는 것을 의미한다. 예를들어 Comparable을 구현한 클래스를 예를 들어보자. 클래스는 원래 본연의 기능A가 있을 것이다.. 하지만 Comparable을 구현(impleme..
[Effective Java 규칙17] 상속을 위한 설계와 문서가 없다면 상속하지 마라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 상속하고 메서드를 재정의하면 무슨일이 생기는지 어떻게 사용하는지 반드시 문서에 남겨야 한다. 하지만 문서만 제대로 작성했다고 상속에 적합한 설계가 되지는 않는다. 클래스 내부 동작을 자유자재로 수정/접근할 수 있는 메서드를 신중하게 선정한 다음에 protected 메서드 형태로 제공해야 한다. 이 protected로 사용할 메서드를 어떻게 정할 것인가? 정확한 답은 없다. 열심히 생각하고 신중하게 고른 다음, 실제로 하위 클래스들을 만들어서 테스트하는 것이 최선이다. 저자에 의하면 상속을 위해 하위 클래스 3개정도 만..
[Effective Java 규칙16] 계승하는 대신 구성하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 상속은 강력한 도구이지만 캡슐화 원칙을 침해하므로 문제를 발생시킬 가능성이 있다. 그리고 상위 클래스와 하위 클래스가 IS-A 관계일 때만 사용하는 것이 좋다. 만약 IS-A 관계가 성립해도, 하위 클래스가 상위 클래스와 다른 패키지에 있거나 상속을 고려해 만들어진 클래스가 아니라면 하위 클래스는 깨지기 쉽다. 이런 문제들을 피하려면 상속(extends)대신 구현(implements)해야한다. 래퍼 클래스를 만든다면 하위 클래스를 만드는 것보다 견고하고 강력하다 //TODO 철학/유래 찾아보기자바는 처음 설계부터 다중상속을 지원하지 않게 만들..
[Effective Java 규칙15] 변경 가능성을 최소하하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 자바 플랫폼에는 String, 기본 자료형 클래스, BigInteger, BigDecimal과 같은 변경 불가능(immutable) 클래스가 많다. 변경 불가능 클래스는 변경 가능 클래스보다 설계하기 쉽고, 구현하기 쉽고, 사용하기 쉽다. 오류 가능성도 적으며 더 안전하다.아래 다섯가지 규칙을 따르면 변경 불가능한 클래스를 만들 수 있다.1. 객체 상태를 변경하는 메서드를 제공하지 않는다.2. 상속할 수 없도록 한다.3. 모든 필드를 final로 선언한다. 이렇게하면 자바 메모리 모델에 명시된 바와 같이 새로 생성된 객체에 대한 참조가 동기..
[Effective Java 규칙13] 클래스와 멤버의 접근 권한은 최소화하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 잘 설계된 모듈은 구현 세부사항을 전부 API 뒤쪽에 감춘다. 모듈들은 API를 통해서만 서로 통신하며, 각자 내부적으로 어떻게 동작하는지 신경 쓰지 않는다.이러한 개념은 정보 은닉/캡슐화라고 알려져 있는 소프트웨어 설계의 기본적인 원칙 가운데 중 하나이다. 캡슐화가 시스템을 구성하는 모듈 사이의 의존성을 낮춰서, 각자 개별적으로 개발하고, 테스트하고, 변경할 수 있게 한다. 그러면 각각의 모듈을 병렬적으로 개발하여 시스템 개발 속도가 올라가게 되고, 유지보수도 쉽게할 수 있다. 정보 은닉 원칙이 좋은 성능을 보장하지는 않지만..
[Effective Java 규칙12] Comparable 구현을 고려하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. Comparable 인터페이스에 포함된 유일한 메서드이고, 이를 구현한 클래스는 순서를 가지게 된다. 또한 검색하거나 최대/최소치를 계산하기도 간단하고, 그 컬렉션을 정렬된 상태로 유지하기도 쉽다. 그리고 다양한 제네릭 알고리즘 및 Comparable 인터페이스를 이용하도록 작성된 컬렉션 구현체와도 전부 연동할 수 있다.만능?? 자바 플랫폼 라이브러리에 포함된 거의 모든 값 클래스는 Comparable 인터페이스를 구현한다. 알파벳 순서나 값의 크기, 시간적 선후관계처럼 명확한 순서를 따르는 값 클래스를 구현할 때는 Compara..
[Effective Java 규칙11] clone을 재정의할 때는 신중하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 어떤 클래스가 Cloneable 인터페이스를 구현하면 Object의 protected 인 clone 메서드가 어떻게 동작할지를 정하게된다.먼저 clone 메서드의 규약은 느슨한 편인데 아래 규약을 살펴보자 객체의 필드단위까지 복사하여 반환하는데 다음의 조건이 일반적으로 충족되야 한다x.clone() != x 이 조건은 참이어야 한다x.clone().getClass() == x.getClass() 이 조건은 참이겠지만 반드시 그래야하는 것은 아니다x.clone().equals(x) 이 조건도 참이겠지만 반드시 그래야하는 것은 아니다..