프로그래밍
-
Android 13 - Battery Resource Utilization프로그래밍/Android 2022. 8. 11. 18:28
앱별 배터리 리소스 제한 When? Android 9부터 Android 13에서는 규칙 수정이 생김 What? 앱이 백그라운드에서 시스템 리소스를 무한으로 사용하지 않도록 제한 Android 9부터 Battery optimization이나 Background restriction으로 관리 Why? 앱의 과도한 백그라운드 작업으로 사용자의 배터리가 빠르게 닳지 않도록 한다. How? 현재 사용 중인 앱에 대해서는 제한하지 않는다. Battery optimization App Standby Bucket 앱이 백그라운드로 내려갔을 때 여러 작업을 제한한다. 앱을 얼마나 최근에 자주 사용했는지 패턴을 파악하여 각 5가지의 앱 버킷에 위치시킨다. 앱 버킷의 중요도에 따라 시스템 리소스를 사용할 수 있도록 한다. ..
-
Testing Kotlin coroutines on Android프로그래밍/Kotlin 2022. 7. 19. 21:58
결론 delay()와 같이 실제 지연이 발생하면 그 지연시간을 포함해 테스트가 진행된다. runTest를 이용하면 delay를 무시해서 좀 더 빠르게 테스트를 실행할 수 있다. 단 withContext에서 Dispatcher가 변경된 경우 delay는 무시하지 않는다. 코루틴은 쓰레드에 위에서 동작하고 사용 가능한 쓰레드를 찾기 위해 코루틴용 ThreadSchdular에 스케쥴링된다. (코루틴 실행 순서와 시간에 영향) 어떤 쓰레드가 사용이 될지 예측이 불가능한 Dispatcher.IO 와 같은 코루틴 정식 Dispatcher 보다는 테스트용 TestDispatcher를 사용한다. (runTest를 사용하면 Dispatcher.IO를 무조건 사용하지 못한다. 안드로이드 개발자 가이드는 권고하지 않는 것 ..
-
Coroutine exceptions handling프로그래밍/Kotlin 2022. 6. 22. 00:14
결론 When a thread throws an exception, a process will be killed. When a coroutine throws an exception, the process will be killed too? When coroutine throws an exception, the process will be killed too. When children coroutines throw an exception, children coroutines will be canceled. 기본적으로는 child coroutine에서 Exception이 발생하면 부모 coroutine에게 자신의 실패 상태를 전파하기 때문에 나머지 children job들이 취소된다. 예외 적용 Cancel..
-
Android 13 - Programmable shaders프로그래밍/Android 2022. 6. 3. 11:56
New APIs from Android 13 RuntimeShader Android 13 adds support for programmable RuntimeShader objects, with behavior defined using the Android Graphics Shading Language (AGSL). Definition Programmerble shaders As you know OpenGL draws faster because of using GPU. It means we can do per-pixel lighting and other neat effects, like cartoon-cel shading at runtime. Vertices A set of independent point..
-
Android 13 - Granular media permissions프로그래밍/Android 2022. 5. 23. 16:42
Affected when? Application targets Android 13 Added new permissions Android 12 Android 13 New permissions Applications must request one or more new permissions instead of the READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE permissions. The set of permissions that you request depends on the type(s) of media that your app needs to access: Type of media Permission to request Remarks Images and pho..
-
Android 13 - FGS Task Manager프로그래밍/Android 2022. 5. 11. 19:11
What it is? FGS Foreground Service FGS Task Manager Regardless of target SDK version. Android 13 allows users to stop foreground services. 더보기 Foreground services Foreground services perform operations that are noticeable to the user. It show a status bar notification, so that users are actively aware that your app is performing a task in the foreground and is consuming system resources. The not..
-
Coroutine - Cancellation and timeouts프로그래밍/Kotlin 2022. 5. 9. 19:51
https://kotlinlang.org/docs/coroutines-basics.html#structured-concurrency Canceling coroutine execution The launch function returns a Job that can be used to cancel the running coroutine: val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // delay a bit println("main: I'm tired of waiting!") job.cancel() // cancels the job job.join() // waits ..
-
R8로 난독화된 stack trace 를 Retrace 하기프로그래밍/Android 2022. 4. 12. 18:35
SDK Manager > cmdline-tools 설치 Mapping 파일 (proguard 빌드하면 나옴) 과 stack trace가 들어있는 txt 파일을 명령어에 입력한다. retrace path-to-mapping-file [path-to-stack-trace-file] [options] *retrace 위치 : ~/Library/Android/sdk/cmdline-tools/latest/bin/retrace mapping.txt stack_trace.txt * mapping.txt 위치 : ~/project/app/build/outputs/mapping/mapping.txt * stack_trace.txt 파일에 "at" 빠지면 복호화 안됨. https://developer.android.com..