일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 어플개발
- 애드몹
- 수성구맛집
- 동성로맛집
- 안드로이드스튜디오
- 대구맛집
- 안드로이드
- 코딩
- 지산동카페
- 동성로카페
- 의무경찰
- 수성구카페
- 애드센스
- 대구인스타핫플
- 범물동카페
- 개발자
- 파이썬
- 인스타핫플
- 안드로이드개발
- 대구핫플
- 대구카페
- 안드로이드앱개발
- 코딩공부
- 앱개발
- 감성카페
- Android
- 동성로핫플
- 안드로이드앱
- androidstudio
- 범물동
- Today
- Total
목록2024/01 (4)
Glacier's Daily Log
코틀린에서 vararg로 가변 인자를 지원. vararg를 사용하면 함수를 호출할 때 인자 개수를 유동적으로 관리할 수 있음. // vararg의 사용 예 fun sum(vararg num: Int) = num.sum() fun main(args: Array) { val nums1 = sum(1 val nums2 = sum(1, 2, 3) } 그렇다면 이미 존재하는 배열을 가변인자로 넘길 수는 없나? spread operator * 사용하기 val tester = arrayOf(1, 3, 5) sum(*tester) 와 같은 방법으로 배열을 spread하여 가변인자로 넣을 수 있음. (c의 포인터 개념과는 다름!)
안드로이드에서 UI 요구사항을 작성하는 방법은 크게 3가지가 있다. 동적으로 프로그래머틱하게 View를 생성 XML 파일을 활용해 UI 작성 Jetpack Compose를 활용하여 작성 아직까지 대부분의 구현은 XML 파일을 활용해 UI를 작성하는 방식을 채택하고 있는데, 수많은 ViewGroup중 LinearLayout이나 RelativeLayout을 활용한 구현이 많이 보인다. 현재 안드로이드 권장사항은 ConstraintLayout 사용인데, ConstraintLayout을 활용하면 어떤 장점이 있는지 알아보자. 우리가 XML로 작성한 코드는 실제로 View기반의 구현체로 바뀌어 화면에 그려지게 된다. 그 View 또한 특수한 생명주기를 따른다 (참고 : https://www.charlezz.com..
Kotlin 1.3에 속하는 캡슐화 블록 예외처리시 사용. val targetJob: Result ... if(targetJob.isSuccess){ it: String -> //성공시 호출됨 } if(targetJob.isFailure){ it: Throwable -> // 실패(오류)시 호출됨 } Result 타입에서 가독성 좋게 값 가져오기 targetJob.getOrThrow() → runCatching문 내에서 성공시엔 성공값, 에러가 발생한 경우 해당 에러 리턴 targetJob.getOrDefault(defaultValue = "Unknown") → runCatching문 내에서 성공시엔 성공값, 에러가 발생한 경우 defaultValue 파라미터를 리턴 targetJob.getOrNull(..
Flow? Coroutine 비동기 작업에서 Suspend 함수를 사용하여 작업이 모두 완료된 후에 값을 리턴받을 수 있다. 하지만 중간에 진행되는 작업 중에 갱신되는 값들도 계속 받을 수 있다면 업데이트를 조금 더 다이나믹하게 진행할 수 있지 않을까? Flow를 사용해서 연속적인 값을 방출하게 구현할 수 있다. LiveData vs Flow 기존에 사용하던 LiveData와 Flow의 차이점? LiveData- 생명주기를 가진 데이터 홀더 - 메인스레드에서 동작. 별도 쓰레드에서 동작해야 하는 상황 (Data Layer에서의 구현 등) 에서는 사용하기 어려움 - 안드로이드 의존성이 밀접하게 결합되어 있어 테스트가 힘들다.- 마찬가지로 안드로이드 의존성이 있기 때문에 코드 분리시에 조심해서 사용해야함 F..