일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- hilt
- lifecycle
- onMeasure
- 알림
- View
- onLayout
- room
- CollapsingToolbarLayout
- 백준
- activity
- LiveData
- notification
- 안드로이드
- Behavior
- sqlite
- HTTP
- AppBarLayout
- Algorithm
- BOJ
- DataBinding
- CustomView
- Navigation
- Android
- recyclerview
- 알고리즘
- ViewModel
- Coroutine
- CoordinatorLayout
- kotlin
- 코틀린
- Today
- Total
목록Programming (프로그래밍) (212)
개발일지
REST API REST 아키텍쳐를 따르는 API를 뜻한다. * API(Application Programming Interface) 애플리케이션 자료 교환을 위한 통신 REST 인터넷 상의 자원을 HTTP Method를 통해 조작하고 특정한 형태로 표현하는 아키텍쳐 입니다. 자원을 URI로 표현하고 HTTP Method를 통해 조작하며 JSON, XML 등의 형태로 표현하기 때문에 다양한 플랫폼에서 사용할 수 있다는 장점을 갖고 있습니다. 최근 다양한 클라이언트가 등장하며 여러 플랫폼에서 적용할 수 있는 방안이 필요했으며, Client와 Server를 분리하면서 유지보수가 편해진다. ex) GET /users/1 ========== { "id": 1, "name": "Admin" } 구성 자원 : 서버..
Broadcast Receiver Android에서 화면 켜짐, 핸드폰 켜짐, 문자 수신 등 시스템 이벤트가 발생했을 때 대처해야 하는 경우가 있다. Broadcast Receiver를 사용하여 이벤트를 수신할 수 있습니다. Broadcast Receiver를 사용할 때 주의할 점은 리소스 관리입니다. Broadcast Receiver는 등록되면 계속해서 이벤트를 수신하고 동작하며 이는 메인 쓰레드에서 작업을 진행합니다(Handler를 따로 설정할 수 있지만 Default 값은 메인). -> Broadcast Receiver에서 작업 처리가 오래 걸리는 경우 ANR이 발생할 수 있다. * 시스템앱뿐만 아니라 다른 앱에서도 발생한 ACTION을 수신할 수 있습니다. * Oreo 이후부터 백그라운드에 제한이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/2APsG/btrg2g1DAXU/XXCRUayeUZVi5R6KKQy2vk/img.png)
Service 어플리케이션이 종료되도 작업을 유지할 수 있는 요소(Android 4대 Component 중 하나이다.)이다. 크게 Background와 Foreground, Bind로 나눌 수 있습니다. Background는 UI가 제공되지 않고 Foreground는 Notification으로 UI가 제공되며 Bind는 Binder로 Service와 통신할 수 있습니다. * Oreo 이상에서 베터리에 대한 규제가 강화되면서 Background Service를 사용하기 어렵습니다. https://developer.android.com/about/versions/oreo/background?hl=ko#services -> 앱 종료시 Background 종료됩니다. * Service를 생성해도 내부적으로 새로..
Response Code HTTP에 Response Code는 100번대에서 500번대까지 여러가지 Code가 정의돼 있으며, 실제 Rest API 서버를 운영할 때 상황에 맞게 Response Code로 응답하여 상태를 잘 표현할 수 있다. 잘못된 예시 로그인 API를 호출하고 로그인 실패를 했다고 가정하자. 에러코드와 메시지가 Body에 담겨져서 왔습니다. 서버에 요청한 결과로 실패를 했지만 Response Code 200 성공으로 왔으며 불필요한 Body가 포함됐습니다. 만약 HEAD Method로 호출한 경우 Body를 받지 못하기 때문에 실패/성공 여부를 알 수 없습니다. POST /login RESPONSE HTTP 200 OK { "code":401, "error":"Unauthorized"..
HTTP Method HTTP Method는 HTTP 통신할 때 사용하는 방법이라고 생각하면 된다. Method 종류는 GET, POST, HEAD, PUT, DELETE, OPTION, TRACE 등이 있으며 각 방법마다 특징과 용도가 다르다. GET과 POST만 사용하는 API 서버들도 많지만 Method의 의미를 파악하여 용도에 맞게 사용하는 것이 효율적이다. * HTTP 버전과 Spec에 따라 지원하는 Method 종류, Method 특징등이 다릅니다. 참고하시기 바랍니다. ex) HTTP 0.9에선 GET Method만 존재, RFC2616은 GET은 Body의 정보를 무시해야 한다고 나왔지만 RFC 7230 이후 해당 구문이 제거됐다. Safe - Method Content를 수정하지 않는 메..
Command Command 패턴은 객체의 메소드를 클래스로 만들어 캡슐화 하여 사용하는 패턴입니다. 만약 A Class에서 B Class 기능을 실행하려면 B Class가 의존적으로 필요하지만 Command 패턴을 사용하면 의존성을 제거할 수 있습니다. 불을 키는 Handler를 구현한다고 합시다. 생성자로 불을 키는 클래스를 받고 함수를 실행하면 됩니다. class NoCommandHandler( private val on: LightOnCommand ) { fun invoke() { on.execute() } } 만약 해당 클래스에서 불을 끄는 클래스로 변경한다면 내부의 코드를 변환해야하고 하나의 핸들러로 불을 키고 끄는 기능을 추가한다면 구조를 바꿔야 합니다. -> 기능과 핸들러가 의존적이고 기능..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/uW1Uk/btrgU2IsBkw/y7QcQ3b2aI0LUgvDHC2kJ1/img.png)
MVVM Model View ViewModel로 이루어진 디자인 패턴이다. MVP 패턴에서 View와 Presenter가 1대1 관계, View가 Presenter에게 의존적인 단점을 보완한 디자인 패턴이다. View에서 사용자의 입력을 받으면 Command Pattern을 통해 ViewModel에 Action을 전달합니다. ViewModel은 해당 Action에 맞게 Model을 업데이트하고 ViewModel은 Model의 업데이트를 수신하여 값을 수정합니다. View도 마찬가지로 ViewModel의 변화를 감지하여 새로운 값을 바인딩합니다. View MVC 패턴에서 View처럼 사용자에게 UI를 제공한다. View는 ViewModel을 알지만 ViewModel은 View를 모릅니다. 또한 DataBi..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bMmnVs/btrgRSzb8cW/aar1doJssJuTPJxHiijZ7K/img.png)
MVP Model View Presenter로 이루어진 디자인 패턴입니다. MVC 패턴에서 View와 Controller의 강한 결합도를 해결하기 위해 나온 디자인 패턴이며, Presenter를 통해 View와 Model의 결합을 줄일 수 있습니다. Model MVC 패턴에서 Model과 같이 데이터를 처리에 관한 로직을 담당합니다. 또한 View, Presenter와 독립적입니다. class Model { fun saveData(data: Int) { // Do Something } } View 사용자와 인터렉션을 담당하며 MVC 패턴에서 View와 비슷합니다. 사용자한테 입력을 받고 프레젠터에게 전달한다. 또한 Presenter가 Model에서 데이터를 불러와 가공하여 View에게 전달합니다. Vie..