| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 스택 자바 코드
- 스택 큐 차이
- jvm 작동 원리
- rxjava cold observable
- 안드로이드 라이선스 종류
- 안드로이드 라이선스
- 멤버변수
- Rxjava Observable
- 서비스 vs 쓰레드
- 안드로이드 유닛 테스트
- 자바 다형성
- 2022 플러터 설치
- 안드로이드 유닛 테스트 예시
- rxjava hot observable
- 큐 자바 코드
- 안드로이드 os 구조
- 클래스
- 2022 플러터 안드로이드 스튜디오
- jvm이란
- ANR이란
- ar vr 차이
- 서비스 쓰레드 차이
- 안드로이드 유닛테스트란
- android retrofit login
- 플러터 설치 2022
- 안드로이드 레트로핏 crud
- rxjava disposable
- 안드로이드 레트로핏 사용법
- android ar 개발
- 객체
- Today
- Total
목록Android (404)
나만을 위한 블로그
※ 이 글의 코드는 예시 코드기 때문에 실제로 사용하려면 반드시 리팩토링한다 다운로드 매니저는 장기간 실행되는 HTTP 다운로드를 처리하는 시스템 서비스다. 백그라운드에서 파일을 다운로드하고 실패 후 or 연결 변경, 시스템 재부팅 시 다운로드를 재시도한다.보통 앱 내에서 PDF나 영상, 음악 등의 파일을 다운로드하려고 하면 시계가 표시되는 부분에 다운로드 이미지가 표시되면서 유저에게 다운로드중임을 알리고 다운로드가 완료되면 다운로드 이미지가 한 번 깜박이면서 다운로드 완료를 알린다. 갤럭시를 사용한다면 굳이 설명할 필요도 없이 다 아는 플로우다. 아이폰 쓴다고요? 그럼 아쉬운거죠 각설하고 전체 코드부터 확인한다. package com.example.regacyviewexample.presentation..
오늘 날짜를 기준으로 안드로이드 16의 베타 4.1이 사용 가능하다. 미국 시간 기준으로 이미 06.11에 출시된 상태다. 내부 암호명은 바클라바라는 이름이다. 언젠간 한국에도 상륙할 안드로이드 16이니 어떤 점이 변경되는지 확인해 본다. 먼저 디벨로퍼 기준 16 이상을 타겟팅하는 앱에서 신경써야 할 사항들을 확인해 본다. 사용자 환경, UI 더 넓은 화면 선택 해제 기능 지원중단 targetSdk를 안드로이드 15(api 35)로 지정한 앱에선 전체 화면이 적용됐지만 앱 내에서 windowOptOutEdgeToEdgeEnforcement를 true로 설정해서 선택 해제할 수 있었다.이제 이 속성이 지원 중단, 사용 중지되면서 개발자가 전체 화면을 선택 해제할 수 없다. 안드로이드 15, 16 타겟팅 ..
3년 전에 달력 커스텀하는 글을 쓴 적이 있다. 그러나 현재 이 글에서 사용하는 라이브러리는 최신 안드로이드 프로젝트에선 사용할 수 없다. https://onlyfor-me-blog.tistory.com/437 [Android] Material CalendarView 커스텀 사용법 정리앱에서 달력을 보여주는 방법으로는 안드로이드에서 기본제공하는 캘린더뷰를 쓰는 방법이 있다. 그러나 이 캘린더뷰는 단일 날짜를 지정하는 건 가능하지만 예를 들어 11일~24일까지의 연속된onlyfor-me-blog.tistory.com 그래서 다른 라이브러리를 찾아보고 사용해 보니 나쁘지 않아서 간단한 커스텀을 거친 후에 어떻게 사용하는지를 정리한다.XML, 컴포즈 둘 다 지원하는 라이브러리라 XML 먼저 다룬 후에 컴포즈에..
안드로이드에서 네트워크 통신을 구현할 때 흔히 쓰이는 라이브러리인 레트로핏의 3.0.0이 3주 전 등장했다.깃허브 리드미에도 3.0.0에 대한 언급이 존재한다. https://github.com/square/retrofit GitHub - square/retrofit: A type-safe HTTP client for Android and the JVMA type-safe HTTP client for Android and the JVM. Contribute to square/retrofit development by creating an account on GitHub.github.com 3.0.0으로 버전 업그레이드되면서 바뀐 것은 아래의 미디엄에 정리돼 있다.이 포스팅은 해당 미디엄의 내용을 번역한 ..
FlowLayout은 아래와 같은 화면을 말한다. 컴포즈를 쓴다면 FlowRow, FlowColumn을 써서 이런 UI를 구현할 수 있다.XML에선 ChipGroup과 Chip을 쓰거나 라이브러리를 쓰면 구현할 수 있지만 다른 방법으로도 구현할 수 있다.아래는 예시 코드를 완성한 후 폴드 에뮬레이터를 펼쳐서 확인한 UI다. 아래는 접힌 폴드 에뮬레이터에서 확인한 화면이다. UI를 보면 알겠지만 리사이클러뷰를 사용했다. 리사이클러뷰에 사용한 data class부터 확인한다. data class UserReview( val id: Int, val title: String, val content: String, val date: String, val positiveFeedbac..
액티비티, 프래그먼트가 생명주기를 갖고 있듯이 뷰도 생명주기를 갖고 있다.이게 중요할까? 당연히 중요하다. 하나의 UI를 만들기 위해 여러 커스텀 뷰를 추가하거나 리사이클러뷰 어댑터로 뷰를 인플레이트할 때 특정 경우엔 뷰를 동적으로 수정해서 고쳐 그려야 하는 경우가 생길 수 있다. 이 때 뷰의 생명주기를 활용해서 로직을 짜야 하는 경우가 생길 수 있다.뷰의 생명주기는 크게 아래와 같다. 오른쪽이 뷰의 생명주기고 왼쪽의 액티비티 생명주기에 따른 호출 단계가 포함된 그림이다. 혹시 몰라 말해두지만 onPause 이전에 onMeasure, measure()가 있다고 해서 두 함수가 onPause 전에 호출된다는 뜻은 아니다. 뷰의 생명주기는 유저에게 보여지는 Visible to User를 제외하면 크게 10..
이 포스팅에선 안드로이드에서 간단한 브릿지 통신으로 웹뷰와 통신하는 방법을 확인한다.시작 전에 난 프론트엔드 분야는 몰라서 html 파일은 안드로이드 프로젝트의 assets 폴더에 inner html 파일을 만들어 사용했고 html 내용은 클로드를 참고해서 작성했음을 미리 써 둔다.먼저 매니페스트에 인터넷 권한을 추가한다. 이건 필수다. index.html은 아래처럼 구성한다. 안드로이드 웹뷰 브릿지 테스트안드로이드 함수 호출JSON 데이터 전송결과가 여기에 표시됩니다 이 파일을 작성하면 에디터 화면 오른쪽 위에 아래와 같은 아이콘들이 보일 것이다. 안 보인다면 에디터 화면을 클릭하거나 마우스를 움직이면 나올 것이다. 브라우저를 선택하면 이런 화면이 나온다. 이제 액티비티의 기본 틀을 구성한다. 웹..
코루틴을 구현할 때 launch, async, withContext를 사용할 수 있다. 이 때 코루틴 디스패처(이하 디스패처)를 써서 코루틴이 어떤 쓰레드 풀에서 작동하게 할 지를 정할 수 있다.아래는 코틀린 공식문서 중 디스패처를 설명하는 문서다. https://kotlinlang.org/docs/coroutine-context-and-dispatchers.html Coroutine context and dispatchers | Kotlin kotlinlang.org코루틴은 항상 코틀린 표준 라이브러리에 정의된 코루틴 컨텍스트 타입의 값으로 표시되는 컨텍스트에서 실행된다코루틴 컨텍스트는 여러 요소의 집합이다. 주요 요소는 코루틴의 Job, 디스패처다코루틴 컨텍스트에는 해당 코루틴이 실행에 사용하는 쓰레..
https://onlyfor-me-blog.tistory.com/1145 [Android] SQLite vs Room DB 비교 및 구현 - 1 -간단한 데이터 저장은 쉐어드 프리퍼런스, dataStore로 할 수 있지만 좀 복잡한 데이터면 다른 방법을 쓰는 게 낫다.그 방법으로 떠오르는 게 SQLite, Room인데 안드로이드 디벨로퍼에선 Room DB 사용을onlyfor-me-blog.tistory.com 1편에서 SQLite 예시를 확인했으니 같은 기능을 Room DB로도 구현해 본다. Room DB는 뷰모델을 써서 구현한다.data class는 이전과 같은 Person을 사용한다. data class Person( var id: Long = 0, var name: String, v..
간단한 데이터 저장은 쉐어드 프리퍼런스, dataStore로 할 수 있지만 좀 복잡한 데이터면 다른 방법을 쓰는 게 낫다.그 방법으로 떠오르는 게 SQLite, Room인데 안드로이드 디벨로퍼에선 Room DB 사용을 더 권장하고 있다. 사실 대놓고 Room 쓰라고 광고하고 있다. 하단의 하이퍼링크를 클릭하면 SQLite 문서로 이동하긴 하지만 도입부에 주의 문구를 표시하고 있다. 어떤 단점이 있어서 SQLite 대신 Room을 쓰라고 하는데, 디벨로퍼가 말하는 단점은 딱 와닿지 않는다. 써보지 않았다면 더 모를 수 있다.이 포스팅에선 SQLite부터 시작해서 두 요소가 뭔지 간단하게 확인하고 어떻게 사용하는지 간단한 예시를 보면서 각각 어떤 특징을 갖는지 확인한다. 먼저 SQLite부터 확인한다. ..