[문제 상황] 스레드를 사용하여 크롤링 데이터를 받아와서 UI의 텍스트를 수정하는 작업을 하려고 했다. 하지만, 크롤링 데이터를 받고 UI가 수정이 되지 않아, 실행 순서를 체크해 보았다. 실행 체크를 해보니 (UI 업데이트 -> 스레드 내부의 작업) 형태로 진행이 되었다. 1차 해결을 위해서 UI 업데이트를 스레드 내부에 넣어주었다. 하지만 오류가 발생하여서 구글링을 통해 찾아보았다. 그 결과 UI를 업데이트 하는 작업은 main 스레드 내부에서 작업이 이루어지고 별도의 스레드에서는 실행이 안된다고 한다. 그렇다면 이를 해결하는 방법이 무엇이 있을까? [작업 스레드에서 UI 업데이트 요청하기] [runONUiThread] runOnUiThread는 UI스레드로 지정된 작업을 한다. 실제 구현한 코드를 ..
Retrofit 이란? 안드로이드에서 안전하게 http를 할 수 있도록 해주는 라이브러리입니다. 사용 방법 1. build.gradle implementation 'com.squareup.retrofit2:retrofit:(insert latest version)' implementation 'com.squareup.retrofit2:converter-gson:(insert latest version)' 2. manifest 파일에 인터넷 사용 권한 추가
팬딩인텐트는 인텐트의 일종으로, PendingIntent는, intent를 바로 수행하지 않고 '특정 시점'에 수행하도록 하는 특징으로 '특정 시점'은 앱이 구동되지 않을 때라고 한다. 대표적 사용 사례 Notification 바탕화면 위젯 AlarmManager 사용법 PendingIntent.getActivity(Context, Int, Intent, Int) PendingIntent.getService(Context, Int, Intent, Int) PendingIntent.getBroadcast(Context, Int, Intent, Int)
앱을 만들면서 내부 로컬 db 사용이 필요했다. sqlite를 사용하려고 관련해서 찾다가, Room을 발견했다. Room이 무엇인가? Room은 안드로이드 로컬 데이터베이스를 사용할 때 쓴다고 한다. 사용법 1. 의존성 추가 build.gradle파일에 dependency에 다음 코드를 추가해준다. def roomVersion = "2.4.2" implementation("androidx.room:room-runtime:$roomVersion") kapt("androidx.room:room-compiler:$roomVersion") 이때 roomVersion의 경우에는 https://developer.android.com/jetpack/androidx/releases/room?hl=ko 에서 최신 버전 ..
recyclerview를 이용해 gridview를 동적으로 생성하였는데 요소들이 왼쪽 정렬이 되었다. 가운데 정렬을 하기 위해 gravity를 center로 하면 해결이 될 줄 알았으나 실패.. 이것저것 해보다가 결국 찾았다. width를 match parent로 두어 최대로 하고 margin을 주어 여백을 만들었다. 그리고 하위 요소에 adjustviewbounts를 true로 주어서 가로 세로 비율을 동일하게 주었다. 코드 결과
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.