- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 책추천
- PR
- errorhandling
- 일본어기초
- KotlinInAction
- rxjava
- suspend
- 인공지능
- 진짜학습지
- 학습지
- coroutine
- 안드로이드
- CustomTab
- n3문법
- webflux
- 진짜학습지후기
- 코틀린
- 진짜일본어
- Kotlin
- GIT
- Android
- blog
- posting
- androidstudio
- 책리뷰
- jlpt
- pullrequest
- ai
- 일본어문법
- github
목록Android (16)
코딩하는 개굴이
사이드 프로젝트를 할 때, 가장 신경쓰이는 점이 무엇이냐 하면 개인적으로는 저작권이다.회사에서는 별도의 법무팀의 검토 후 진행되기에 신경쓰지 않았던 것들을리소스 하나하나 신경써야하기 때문인데 그 중 가장 골치 아픈 것이 폰트이다.예쁜 것은 저작권에 걸리고 그렇다고 신경을 쓰지 않기에는 전체적으로 완성도에 영향을 끼친다. 따라서 결국 돌고 돌아 몇개의 안전한 폰트들만 받아 ttf 로 넣어 사용하게되곤한다.언제까지 배달의 민족 주아체만 쓸 것인가?! 특히나 본인의 경우 사이드 프로젝트(사진을 읽다)를 하며 여러 폰트들을 예시로 보여주고 사용자가 고를 수 있게끔 하는 기능 구현을 위해 webview 로 font 사이트를 띄우고 download 를 감지해 그 파일을 찾아 폰트를 적용할 수 있게하는 방식을..
이번 Google I/O Android 내용 중, 웹 관련 업데이트 사항에 대해 정리해 보았습니다. 직접 번역한 것이므로, 오타/오역이 존재 할 수 있습니다. 발견될 경우 공유 부탁드립니다. 개발자들은 여러가지 이유로 Android 내에 웹을 사용하게 되는데, Android 앱에서 웹 위젯을 재사용하여 타사 콘텐츠를 통합하거나, 전체 웹 앱을 플랫폼으로 가져오는 등 Android 는 이를 위해 많은 도구들과 기능을 제공하고 있다. 관련하여 이번 2023 Google IO 에서는 아래의 새로운 기능을 소개하고 있다. Privacy 개선과, large screen 에 대한 지원 추가 (webview 에서의 image drag and drop 등) 부분 Customtab 의 지원 PWA 의 새로운 기능들, 그..
기존에 액티비티에서 결과를 받아올 때, 어떤 방식을 사용했는지 기억하는가? 우리는 지금까지 StartActivityForResult 로 액티비티를 호출하고, onActivityResult를 사용해 결과를 받아오곤했다. 그러나, 이 방법은 Deprecated 되었다. Activity 클래스에서 여전히 사용할 수는 있지만, Android는 AndroidX Activity 와 Fragment 에 도입된 새로운 방식을 통한 사용으로 변경될 것을 권장하고 있다. 그것이 바로 registerForActivityResult 이다. 우선, 우리는 가장 심플한 케이스인 MainActivity ← → SecondActivity 로 상호 데이터를 전달하는 케이스를 기반으로 알아보도록하자. MainActivity: Activ..
지난번에, 아래 링크 포스팅에서 Optimize Import 를 Macro 로 지정해놓았더니 몇개 이상의 Import 들이 상위 패키지가 겹치면 그냥 묶어버리는 현상이 발생하였다. https://yejinson97gaegul.tistory.com/entry/Android-Studio-Android-Macro-feat-Save-All-Reformat-Optimize (증말… 하나하나 일일이 풀어주는데 놓치는것도 생기고 귀찮기 그지없다… 편리함을 위해 불편함을 감수하다니..) 사실, 그래도 큰 문제는 없긴하지만 불필요한 subpackages 까지 포함되는 문제와, 그러한 이유로 lint rule 로 이를 막고 있는 경우도 있다. 그래서 오늘은 Optimize Import 시 “single name impor..
비동기 작업 관련 개발을 하고 있던 중, 생각 외로 시간이 오래 걸린다 싶은 경우가 있을 수 있다. 얼마나 걸리는지 파악해보고 Thread 분리를 수행할지 어찌 할지 등을 고려해야하기 때문인데, Android Studio 의 Profiler 를 활용해 이를 측정하고, UI Janky frame (버벅거림) 을 확인할 수 있는 방법에 대해 알아보자. Android Studio Profiler Android Studio Profiler (구 Android Monitor 도구) 는 앱의 CPU, Memory, Network, Battery 리소스를 사용하는 방법을 이해하는데 도움이 되는 실시간 데이터를 제공하는 도구이다. 기본적인 사용 방법에 대해 Developers 가이드에 기입되어있는 내용은 아래와 같다...
RxJava 는 비동기를 위해 주로 사용되는데, 그냥 사용한다고 비동기 처리가 수행되는 것이 아니라, 스케줄러를 통해 스레드를 분리해주어야한다. 스케줄러란? Scheduler 는 RxJava 의 코드가 어느 스레드에서 실행될 것인지를 지정하는 역할을 수행한다. 스케줄러의 지정은 subscribeOn, observeOn 연산자를 이용한다. subscribeOn: Observable 이 데이터의 흐름을 발생시키고 연산하는 스레드를 지정할 수 있다. 데이터를 발생시키는 쪽에서 흐름을 제어하기 위해 사용 observeOn: Observable 이 Observer에게 알림을 보내는 스레드를 지정할 수 있다. 전달받는 쪽에서 데이터를 처리하는 부분을 위해 사용 스케줄러의 종류 💡 RxJava 에서는 Computat..
Subject 는 데이터 스트림과 subscriber 성격을 둘다 갖고있다. Observable 과 Observer 를 둘다 구현한 추상 타입이기 때문에, 하나의 소스로부터 다수의 subscriber 에게 멀티 캐스팅이 가능한 장점이 있다. Observer 를 직접 구현하기 때문에, onNext, onError, onComplete 등의 이벤트를 수동으로 subscriber 에게 전달해줄 수 있다. 데이터 스트림의 성격 예를들어 PublishSubject 를 기준으로 살펴보자. 간단하게 PublishSubject 는 가장 단순한 구현체로, 이벤트를 subscriber 에게 전달할 수 있다. 단, 구독한 시점에서부터 발생하는 데이터를 전달하기 때문에, 데이터가 모두 발행된 뒤 구독하면 받을 수 없다. va..
Android 에서 비동기 실행을 할때 본인은 간혹 실수하여 에러를 마주하곤 한다. 바로 View 를 UI Thread 에서 변경하지 않아서 발생하는 것이 그것이다. 안드로이드 시스템은 애플리케이션이 실행되면 하나의 실행 스레드로 애플리케이션의 프로세스를 실행하는데, 이것을 메인 스레드라고 한다. UI 도구 키트 구성 요소를 생성 및 조작할 때 상호작용하는 스레드가 MainThread 이며, 그렇기 때문에 UI Thread 라고도 불린다. Main Thread 에서는 오래 소요되는 작업을 수행하지 않는 것을 권장하는데, 오래 소요되어 응답성/반응성이 떨어진다면 사용성이 떨어지거나 ANR 이 발생할 수 있기 때문이다. 따라서, 안드로이드 스레드 사용 시 아래와 같은 사항을 유념해야한다. 시간이 오래걸리는 ..
개발하면서 Radio Button 을 사용하게 되었는데, 생각 외로 이상한 현상이 있었다. 어느 버튼이 눌린 것인지 알아야하는거면 position 으로 radio group 에서 listener 를 달면 되겠지? 라고 생각하며 xml 을 이리 짜둔 상태에서 실행해보니, 재미있는 현상이 발생하더라. 동시에 여러개가 선택되는 것이 아닌가? 이게 뭔일이래… (본래 Radio Button 이란 CheckBox 와는 달리, 한번에 하나만 선택될 수 있도록 하는 특징이 있다.) 생각보다 원인은 쉬운 것이었다. 아래 xml 에서 어떤 것이 잘못된 건지 알 수 있을까? 바로, RadioButton 에 id 를 지정하지 않은 것이 원인이었다. 따라서 listener 도 돌지 않고, 한번에 하나만 선택되는 것도 되지 않았..
💡 해당 포스팅은 Notion AI를 이용하여 작성되었습니다. (자동 작성된 내용을 토씨 하나 안 바꾸었음을 알립니다. 심지어 이 정보창도 AI 검수를 시켰습니다.) Notion AI를 이용하는 방법은 Notion AI 기능 사용하기 포스팅을 참고해 주세요. 안드로이드 앱을 개발하다보면 다양한 에러가 발생할 수 있습니다. 이 문서에서는 자주 발생하는 몇 가지 에러와 그 해결 방법에 대해 설명하겠습니다. 1. Gradle 에러 Gradle build 시 다음과 같은 에러가 발생할 수 있습니다. Could not find com.android.tools.build:gradle:4.1.2. 해결 방법: build.gradle 파일에 다음 dependency를 추가합니다. dependencies { classp..