안드로이드/잡다한 지식
[안드로이드] 안드로이드 14 베타 1 알아보기 - 1
안녕하세요 이번에 안드로이드 14 베타 1가 Release되면서 변경된 사항에 대해서 정리를 해봤습니다. 1에서는 앱 동작변경사항에서 모든 앱의 경우를 정리할려고 한다. 안드로이드 14 일정 2월 3월은 개발자 프리뷰, 현재 5월까지 베타 릴리즈 기간이다. 그러면 안드로이드 14가 되면서 우리 앱이 어떤 식으로 변화하게 되는지가 중요하다. 안드로이드 14에서 우리 앱은 어떤 변화가 있을까? 앱 동작 변경 사항 이 섹션은 targetSdkVersion과 관계없이 Android 14에서 실행한 모든 앱에 적용되는 사항이다. 정확한 시간에 울리는 알람 예약은 이제 권한이 필요함 Android 13 이상 타겟팅하는 새로 설치된 대부분의 앱은 더 이상 사전에 권한을 부여해주지 않는다 즉, 권한 요청을 해준 뒤 사..
[안드로이드] WifiManager에서 Deprecated된 기능들
Wifi 관련 개발을 하는 중 Android 8,9,12 차이가 존재하는 것을 알게 되어서 정보 공유를 위해 포스팅합니다. 1. startScane() 먼저 WifiManager 중 startScane이 Android 9에서부터 Deprecated 되었다. 개발자는 아래와 같은 이유로 Deprecated했다고 한다. "우리는 앱이 네트워크 성능을 개선하고 배터리 수명을 개선하기 위해 요청할 수 있는 스캔 수를 추가로 제한하고 있습니다. WifiManager.startScan() 사용은 다음으로 제한됩니다. 각 포그라운드 앱은 2분마다 4번 스캔으로 제한됩니다. 결합된 모든 백그라운드 앱은 30분마다 한 번 스캔으로 제한됩니다. " 더보기 "We are further limiting the number o..
[안드로이드] AsyncTask가 Deprecated된 이유
AsyncTask is Deprecated 회사에서 코드를 보는 중 AsyncTask가 Deprecated되었다는 것을 보고 왜 Deprecated 되었는지, 그리고 대신할 만한 것을 볼려고 한다. 왜 Deprecated되었나요? AsyncTask was intended to enable proper and easy use of the UI thread. -> AsyncTask는 UI thread(혹은 MainThread)를 쉽고 적절하게 사용했었다. However, the most common use case was for integrating into UI, -> 그렇지만, 일반적인사례에서는 UI에 통합하는 것이고 and that would cause Context leaks, missed callb..
[kotlin] 데이터 클래스 활용법
Data Class에서 내가 자주 사용하는 활용 1. Response를 받은 데이터들을 내가 사용할 Data로 가공하기 // Response 받을 데이터 클래스 data class DataResponse( val a: String, val b: String, val c: String, val d: Int, ) // DataResponse클래스를 MyData class로 변경하기 위한 함수 fun DataResponse.toMyData(): MyData { val dataList = listOf(a, b) return MyData( dataList = dataList, ) } // 내가 UI에서 사용할 데이터 data class MyData( val a: String, val b: String, ) 나는 ..
[안드로이드] Compose Pager에서 swipe시 렉
안녕하세요. 이번 포스팅은 Compose Pager에서 Swipe할 때 렉이 걸리는 문제를 해결했던 과정을 작성하려고 합니다. 상황 버벅이는 문제 위의 영상에서 3~4초쯤 Swipe 시 버벅이는 문제가 발생해서 해결하기 위해 먼저 인터넷 검색을 했습니다. StackOverflow에서 제시한 해결법 1. Pager내에 Coil을 사용한 경우 렉이 있을 수도 있다. (링크) - Pager, LazyColumn에서 Coil을 사용할 경우 렉이 있다는 이슈가 있다고 한다. 하지만 나같은 경우에는 로컬에서 이미지를 불러오기 때문에 해당하지 않는다. 2. Pager내에서 LazyRow, LazyColumn을 사용한 경우 (링크) - 두개 동시에 사용한경우 렉이 걸리는 이슈가 있다고 한다. 하지만 해당하지 않아서 패..
MPAndroidChart 너는 뭐니
xml에서 chart는 없나? 에서 시작한 chart 찾기. android에서 제공하는 것은 없었고, 유명한 라이브러리가 있어서 소개할려고 한다. GitHub - PhilJay/MPAndroidChart: A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubb A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations. - GitHub - PhilJay/MPAndroi..
[안드로이드] 클린 아키텍처? MVVM? MVP?
클린 아키텍처는 MVVM MVP 아닌가요? 나는 클린 아키텍처가 MVVM, MVP를 적용한 프로젝트를 뜻한 줄 알았다. 반은 맞고 반은 틀린 말이라는 것을 알게 되었고 그 내용을 정리할려고 한다. 클린 아키텍처와 디자인 패턴(MVVM, MVP, MVI 등) 클린 아키텍처와 디자인 패턴은 모두 유지 관리 및 확장 가능한 시스템을 만드는데 사용되는 개념이다. 클린 아키텍쳐는 외부 프레임워크 및 라이브러리로부터 소프트웨어 시스템의 분리와 독립성을 강조하는 소프트웨어 철학이다. 디자인 패턴은 소프트웨어 개발에서 발생하는 일반적인 문제에 대한 재사용이 가능하도록 만든 솔루션이다. 안드로이드 권장 아키텍처 안드로이드에서 아래와 같은 아키텍처를 권장하고 있다. 앱 아키텍처 가이드 | Android 개발자 | Andr..
안드로이드 RoomDB 테스트 코드 짜기
클린 코드 책을 읽는 중 TDD 개발론을 공부했다. TDD TDD(Test-Driven Development)는 코드가 기능적이고 유지 관리 가능하며 테스트하기 쉬운지 확인하기 위해 실제 코드 전에 테스트를 작성하는 소프트웨어 개발 방법론입니다. Android 개발 맥락에서 TDD를 사용하여 Android 앱의 품질과 안정성을 보장할 수 있습니다. 1. 문제를 조기에 식별하고 수정하는 데 도움이 됩니다. TDD를 사용하면 테스트가 실제 코드보다 먼저 작성되므로 개발 프로세스 초기에 모든 문제를 식별하고 수정할 수 있습니다. 2. 리팩토링 촉진 리팩토링(즉, 기능을 변경하지 않고 코드 구조를 변경하는 것)은 어려울 수 있지만 TDD는 리팩토링 후에도 코드가 의도한 대로 계속 작동하는지 확인하기 위해 실행할..