분류 전체보기

안드로이드/AAC(Android Architecture Components)

[AAC] Lifecycle 정의와 활용

안드로이드에서 생명 주기는 매우 중요합니다. 앱의 활성 상태를 알아야 UI나 동작 등의 작업을 할 수 있기 때문입니다. 액티비티나 프래그먼트의 경우, onCreate 메서드나 onStop 메서드와 같이 해당 상태에 따라 호출되는 메서드가 있습니다. 하지만 수명 주기의 현재 상태에 따라 UI와 다른 구성 요소를 관리하는 호출이 너무 많이 발생하면 여러 컴포넌트를 수명 주기 메서드에 상당한 양의 코드를 배치하게 되어 유지하기 어려워집니다. 또한, 장기 실행 작업을 진행해야 하는 경우 onStop() 메서드가 onStart() 전에 종료되어 구성 요소가 필요 이상으로 오래 유지되는 경합 상태가 발생할 수 있습니다. 이를 해결하기 위해 안드로이드에서는 androidx.lifecycle을 지원하고 있습니다. Li..

안드로이드/AAC(Android Architecture Components)

[AAC] LiveData의 정의와 사용

Android 개발에서 데이터의 변경을 감지하고 이에 따라 UI를 업데이트하는 것은 매우 중요합니다. 이를 위해 다양한 관찰 가능한 데이터 홀더 클래스가 존재하며, 그중에서도 LiveData는 매우 유용한 도구입니다. 이번 글에서는 LiveData의 장점과 특별한 기능, 그리고 실제 사용 예제를 통해 이를 사용하는 상황을 알아보겠습니다. LiveData란 무엇인가?LiveData는 Android Architecture Components(AAC)의 일부로, 관찰 가능한 데이터 홀더 클래스입니다. 데이터의 변경을 감지하고, 이를 통해 로직을 수행할 수 있게 합니다. 최근에는 LiveData 외에도 Flow와 같은 관찰 가능한 데이터 홀더들이 있지만, LiveData만의 특별한 장점이 있습니다. Androi..

안드로이드/AAC(Android Architecture Components)

[AAC] DataBinding 고급 기능

DataBinding에는 여러 고급기능이 있습니다. 오늘은 그 기능들을 정리해 볼까 합니다. 표현식DataBinding에서는 xml에서 단순히 객체에 접근하여 값만 가져오는것이 아닌 간단한 표현식이나 함수의 사용을 지원하고 있습니다. 연산자의 지원Mathematical, 수학+ - / * %String concatenation, 문자열 결합+Logical, 논리&& ||Binary, 2진 연산& | ^Unary, 단항 연산+ - ! ~Shift, 쉬프트 연산 >> >>> Comparison, 비교 연산자== > = Grouping ()Cast  Array access, 배열 접근[] Ternary operator, 삼항 연산자?:널 병합 연산자??  이밖에도 String.valueOf() 같은 Jav..

안드로이드/AAC(Android Architecture Components)

[AAC] DataBinding의 정의와 적용

AAC 중 DataBinding에 관하여 포스팅을 해볼까 합니다. DataBinding 드로이드 애플리케이션에서 UI 구성 요소를 애플리케이션 데이터 소스에 결합할 수 있는 기술입니다. 이 기능을 사용하면 XML 레이아웃 파일에서 직접 데이터 객체에 접근할 수 있으며, 코드의 간결성과 유지보수성을 크게 향상시킬 수 있습니다.  이렇게 설명한다면 사람들은 ViewBinding과 무슨 차이가 있냐고 의문을 가질수있습니다. 이 둘의 차이는  XML 레이아웃 파일에서 직접 데이터 객체에 접근할 수 있다는 점입니다.  이는 큰차이입니다. ViewBinding의 장점은 더 이상 View를 findViewById를 통하여 가지고 올필요가 없어진 것입니다. 이것만으로 코드의 양이 줄어 좀 더 간결하고 성능의 향상을 볼..

안드로이드/AAC(Android Architecture Components)

왜 앱개발자 공고 AAC사용 경험을 우대할까?

안드로이드 앱 개발자 공고를 보면 우대사항으로 'AAC 경험'이라는 항목을 종종 볼 수 있습니다. 그렇다면 이 AAC는 무엇일까요?AAC란 무엇인가?AAC는 Android Architecture Components의 약자입니다. 이는 안드로이드 앱 개발 시 통일성과 코드 감소 등의 여러 장점을 제공하는 Jetpack 라이브러리 모음 중 하나입니다. AAC에는 DataBinding, Lifecycles, LiveData, Navigation, Paging, Room, ViewModel, WorkManager와 같은 요소들이 포함되어 있습니다. 이들은 앱의 구조나 디자인을 설계할 때 큰 도움을 줍니다.  DataBinding은 ViewBinding에 추가로 xml에서도 코드에 접근하여 해당 값들을 사용할수있..

코틀린/백준

[백준] - N과 M (6)(Kotlin)

https://www.acmicpc.net/problem/15655 15655번: N과 M (6) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연..

코틀린/백준

[백준] - N과 M (5)(Kotlin)

https://www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다. 출력 한 줄에 하나씩 문제..

안드로이드/안드로이드

[Android/Kotlin] flatMapLatest 로 리팩토링

필자가 앱을 완료하고 리팩토링을 하는 중이었습니다. override fun getAllBudgetsToFlowWhenBudgetChanged(): Flow = flow { budgetDataSource.getAllBudgetsOrederByDateToFlow().collect { budgets -> val list = budgets.map { budget -> val categoryProceduresList = categoryProceduresDataSource.getAllCategoryProceduresWithBudgetNum(budget.num) val reduce = categoryProceduresList.sumOf { categoryProcedures -> categoryProcedures.pr..

안드로이드/UI

[Android/UI] EditText 입력시 형식대로 넣어주기

이러한 EditText에 저는 값을 입력하면 내가 원하는 형식대로 EditText의 값을 바꿔주고 싶습니다. //in Activity private val decimalFormat = DecimalFormat("#,###") private var resultMoney: String = "" budgetMoneyEdittext.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { } override fun onTextChanged(charSequence: CharSequence?, p1: Int, p2: Int, p3: Int) { if(..

안드로이드/안드로이드

[Android/Kotlin] 액티비티의 종료로 ViewModel이 죽어버렸다!

https://github.com/LESSERAFIM-Aespa/TripMate/issues/126 가계부 컨탠츠(BudgetContentActivity) 가계부 수정시 버그 · Issue #126 · LESSERAFIM-Aespa/TripMate “가계부 컨탠츠(BudgetContentActivity) 가계부 수정시 버그” Describe the bug 가계부 수정시 카테고리를 추가하거나 삭제할경우 해당 카테고리가 추가되거나 삭제되지 않는 이슈가 발생 카테고리 삭재 github.com 개발을 하면서 액티비티에서 ViewModel의 함수를 사용 중, contentViewModel.updateBudgetAndCategories(budget.copy(num = budgetNum), categories) fi..

감자씨앗
'분류 전체보기' 카테고리의 글 목록 (3 Page)