일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- onLayout
- Behavior
- LiveData
- kotlin
- View
- ViewModel
- recyclerview
- 알고리즘
- onMeasure
- AppBarLayout
- CoordinatorLayout
- HTTP
- DataBinding
- lifecycle
- notification
- Android
- hilt
- Coroutine
- activity
- 백준
- room
- Algorithm
- BOJ
- CollapsingToolbarLayout
- 코틀린
- 안드로이드
- 알림
- Navigation
- CustomView
- sqlite
- Today
- Total
목록Android (111)
개발일지
URLConnection Java에서 HTTP 통신을 제공하는 기본적인 라이브러리이다. JDK 1.1 시절부터 있던 라이브러리고 JDK 1.1은 1997년 2월 19일에 나왔다. 즉 1996년 HTTP/1.0을 기준으로 개발한 라이브러리기 때문에 버그가 있을 수도 있다. 코드 private fun getUrlencoded() { thread { (URL("${getURL()}?${getParameter()}").openConnection() as HttpURLConnection).apply { doInput = true doOutput = false requestMethod = "GET" connectTimeout = 3000 readTimeout = 3000 setRequestProperty("Cont..
HTTP (Hypertext Transfer Protocol) 웹 브라우저와 웹 서버 간의 통신을 하기 위한 규약이다. 특징 HTTP는 서버/클라이언트 모델을 따른다. 비연결 지향 클라이언트가 Request를 보내면, 서버는 클라이언트의 요청에 맞는 Response를 보내고 연결을 끊는다. 연결이 끊어지면 서로의 정보를 유지하기 때문에 정보를 잃는다. => 쿠키와 세션으로 해결가능 지속적으로 연결되는 형태가 아니기 때문에 불특정 다수를 대상으로 서비스하기 좋고, 많은 요청을 처리할 수 있다. HTTP Request Message Start Line : HTTP 시작부분 HTTP Method Request Target(목표 주소) HTTP Version HTTP Header Host : Host URL A..
안드로이드에서 Dialog를 Custom해서 만들 때 layout_width와 layout_height를 match_parent로 해도 꽉 차지 않는데 이는 Dialog의 window가 wrap_content이기 때문이다. => window의 크기를 바꾸면 된다. window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) 반드시 setContentView를 호출한 다음 바꿔야한다.
Location 안드로이드에서 GPS 센서를 활용하여 위치 정보를 얻거나, Data, Wifi, Bluetooth 등 네트워크를 통해서 위치 정보를 얻을 수 있다. 권한 설정 포그라운드 위치 : 위치 정보를 한번 또는 정해진 시간안에서만 수신할 때 (앱이 종료되면 수신 불가능) 백그라운드 위치 : 앱이 주기적으로 위치 정보를 수신할 때 (앱이 종료되도 수신) manifest Android 6(API 23)이상에서는 런타임으로 포그라운드 위치 정보를 요청해야 합니다. (그 이전 버전은 앱 설치시 권한 사용 알림) (위험권한 확인 : developer.android.com/reference/android/Manifest.permission) Android 10(API 29)이상에서는 런타임에서 백그라운드 위..
LiveData LiveData는 Data를 Observer 패턴으로 관찰하여 변화가 있을 때 업데이트하는 코드를 작성할 수 있다. 일반적인 Observer패턴과 다르게 LiveData는 Activity나 Fragment의 생명주기를 관찰하여 활동 상태(STARTED, RESUMED)일 때만 업데이트한다. dependency dependencies { def lifecycle_version = "2.2.0" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" } 장점 UI와 데이터 상태의 일치 보장 Observer패턴을 따르기 때문에 Observer코드에 UI를 변경하는 코드를 삽입하면 데이터와 ..
ViewModelProvider ViewModel을 사용할 때 ViewModel을 직접 생성하는 것이 아닌 ViewModelProvider를 통해서 ViewModel를 요청하게 된다. ViewModel을 직접 생성자를 통해 생성하면 ViewModel을 잘못하용 하는 것이다. ViewModel 생성과정 ViewModelProvider를 통해 ViewModel을 요청한다. ViewModelProvider생성자로 ViewModelStoreOwner(Activity, Fragment), ViewModelProvider.Factory를 넘겨받는다. ViewModelProvider는 ViewModelStoreOwner를 참조하여 ViewModelStore에 ViewModel을 요청한다. ViewModelStore에..
ConfigurationChange같은 상황으로 Activity가 onDestroy되고 재생성될 때 Fragment도 같이 재생성된다. 하지만 setRetainInstance(true)를 설정하면 onCreate, onDestory가 호출되지 않고 재사용된다.
ViewModel Android Jetpack의 구성요소이며 UI관련 데이터를 관리하도록 설계되었습니다. UI관련 Data를 Activity, Fragment와 분리시켜 관리하면서 많은 이점을 얻을 수 있습니다. 장점 Android에서 Activity와 Fragment의 수명주기를 관리하기 때문에 Android에서 UI 컨트롤러를 제거하거나 다시 만드는 경우 데이터가 삭제되지만 ViewModel은 독립된 수명주기를 가지기 떼문에 데이터를 유지할 수 있습니다. UI관련 Data를 비동기적인 호출로 받아올 때 메모리 누수를 신경쓰거나, 비동기 호출을 관리하는 코드가 필요하거나 UI 컨트롤러가 변경될 경우 이미 호출한 코드를 다시 호출해야하는 경우가 생길 수 있지만 ViewModel을 재사용하면서 이러한 불편..