Tech

Fragment에서 권한 요청하기 (2021)

Activity Result를 받아오는 API가 변경되면서 Fragment.requestPermissions도 deprecated 되었다. registerForActivityResult를 호출하고 ActivityResultContracts.RequestPermission을 인자로 전달해야한다. 복수의 권한이 필요한 경우는 Contract를 RequestMultiplePermissions로 바꿔서 사용한다. 하지만 사진/동영상 촬영, 연락처 선택 등 일반적인 케이스는 기본적으로 제공하는 Contract를 활용하는 것으로 커버할 수 있다.

트레이드 오프

트레이드 오프라는 개념을 처음 배울 때는 서로 양립할 수 없다는 사실을 너무 명백히 알 수 있는 케이스들로 배웠던 것 같다. 예를 들면 시간복잡도와 공간복잡도, 또는 일정과 품질과 비용. 시간을 줄이려면 공간을 많이 써야하고, 공간을 아끼려면 시간을 더 써야한다. 일정을 줄이려면 품질이나 비용을 양보해야하고, 품질을 높이려면 일정과 비용을 더 들여야하고, 비용을 줄이려면 품질과 일정을 희생해야한다는 것은 …

트레이드 오프 Read More »

[Kotlin] for-loop with no additional object allocation

In Kotlin, we can use functions such as forEach, forEachIndexed, and map to iterate items in collection. It’s convenient to use, but it comes with cost; those functions create additional objects like Iterator. For most cases, it wouldn’t be a serious problem to have some temporary objects. However, when overriding onDraw method of View class, …

[Kotlin] for-loop with no additional object allocation Read More »

요즘 안드로이드 앱 개발은

좀 느리긴 해도 바람직한 방향으로 계속 가고 있는 것 같다. Jetpack에 흥미로운 컴포넌트들이 계속 추가되고 있는데, kotlin 문법을 적절히 활용해서 고급 기능을 간결한 코드로 활용할 수 있게 잘 만들어놓은 것으로 보인다. 이런 것들을 잘만 활용하면 정말 예전과는 확연히 다른 느낌으로 모던하게 개발할 수 있을 것 같은데, 아직 익혀야 할 것들이 많다. 아직도 자바 스타일의 코딩에서 …

요즘 안드로이드 앱 개발은 Read More »

[Kotlin] 객체 할당 없는 for loop

Kotlin에서는 배열이나 컬렉션을 다룰 때 forEach, forEachIndexed, map 등을 통해 내부 항목들을 접근해서 연산을 수행할 수 있다. 이러한 함수들은 인덱스를 직접 관리할 필요가 없어서 편리하긴 하지만, Range나 Iterator같은 부가적인 객체를 생성한다는 단점이 있다. 대부분의 경우에는 객체 한두개 정도 추가 할당하는 것이 큰 문제가 되지 않겠지만, 안드로이드에서 View 클래스의 onDraw 메서드를 오버라이드할 때에는 메서드 내에서 새로운 …

[Kotlin] 객체 할당 없는 for loop Read More »

집단지성 프로그래밍

이 책을 산 건 거의 10년 전이었다. 앞부분을 좀 보다가 ‘통계 같은게 좀 나오는군~’하는 느낌 정도로 알고 덮어놨다가 작년에 다시 훑어봤는데, 제목의 느낌과는 달리 그냥 인공지능 책이었다. 요즘은 거의 ‘인공지능 = 머신러닝’이지만 이 책에서는 머신러닝 외에도 고전적인(?) 인공지능 알고리즘을 두루 다루고 있다. 당시에는 ‘웹 2.0’이 더 핫한 단어였지만, 한 5년 정도 늦게 나왔다면 ‘빅데이터 프로그래밍’ …

집단지성 프로그래밍 Read More »

Check App Standby Bucket using ADB command

A new power management feature called App Standby Bucket has beed added in Android 9(Pie).(https://developer.android.com/about/versions/pie/power) App Standby Bucket allows Android system to categorize priorities of apps in 5 buckets as follows; Active Working set Frequent Rare Never Apps go into one of those buckets according to how actively they are used. An important thing to …

Check App Standby Bucket using ADB command Read More »

주석 처리된 오래된 코드를 어떻게 할 것인가

더 이상 필요 없게된 코드를 주석으로 남겨두는 경우가 있다. 나중에 급하게 필요하게 되면 참고하기 위해서 남겨두곤 했었다. 그런데 그 때의 코드를 다시 보게 되면 사고의 한계도 그 때의 자신에 맞춰지게 되는 듯한 느낌이 들 때가 있다. 과거의 나보다 지금의 내가 더 코딩을 잘 한다면, 같은 기능을 하는 코드를 훨씬 쉽고 단순하게 구현할 수 있을 것이다. 구체적인 사례로 검증을 해보진 …

주석 처리된 오래된 코드를 어떻게 할 것인가 Read More »

ADB로 App Standby Bucket 확인하기

안드로이드 9부터는 App Standby Bucket이라는 전원 관리 기능이 추가되었다.(https://developer.android.com/about/versions/pie/power) App Standby Bucket이란 안드로이드 시스템이 앱을 처리하는 우선순위를 아래와 같이 크게 다섯 가지로 분류하는 기능이다. Active Working set Frequent Rare Never 사용자가 앱을 얼마나 자주 사용하는지에 따라 각 버킷으로 이동하게 되며 정확한 기준은 (어뷰징을 생각한다면 당연히) 알려져있지 않다. 한 가지 주의할 부분은 앱이 어느 버킷에 있느냐에 …

ADB로 App Standby Bucket 확인하기 Read More »