Fatal Exception: android.database.CursorWindowAllocationException: Could not allocate CursorWindow '/data/user/0/~. db' of size 4194304 due to error -12.직접 재현되는 것은 아니지만 갑자기 특정 사용자의 Crashlytics로부터 위와 같은 내용의 에러 리포트를 받았습니다.내용을 보니 Cursor 활용 부분에서 메모리 초과로 인한 Crash가 발생한 것으로 파악됩니다.문제가 발생 코드는 특정 조건에 해당하는 데이터의 COUNT를 쿼리하는 내용이었습니다. 데이터나 메모리 사용량 등.. 근본적인 원인들이 있겠으나 일단 대응 코드로 어차피 1개 이상의 존재 유무만 파악하면 되는 것이므로 c..
exception
이미지 로딩 라이브러리 중 하나인 Colil을 Compose UI에서 로딩 시, 실패했을 경우의 Error를 확인하기 위한 방법입니다. val painter = rememberAsyncImagePainter( model = ImageRequest.Builder(context).data(item.imageUrl) .placeholder(R.drawable.blank_ad).build())인자로 받은 item의 imageUrl을 통해 이미지를 로딩합니다. 물론 manifest에 인터넷 사용 권한이 허가되어 있는지 또한 반드시 체크해 주세요.로딩했는데, placeholder의 Drawable로 표시되면 뭔가 문제가 있는 것이겠지요? val state = painter.statepainter의..
Crashlytics 살피던 중, 아래와 같은 Error Report를 발견했다. Fatal Exception: java.lang.IllegalArgumentException: View=DecorView@b5f5db7[TestActivity] not attached to window manager at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:657) at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:564) at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.j..
안드로이드에서 발생하는 Exception들은 기본적으로 Throwable을 상속받고 있다. public open class Throwable(open val message: String?, open val cause: Throwable?) { constructor(message: String?) : this(message, null) constructor(cause: Throwable?) : this(cause?.toString(), cause) constructor() : this(null, null) } 인자로 메시지와 cause Throwable을 받는다. 이를 활용해 Custom Exception을 활용할 수 있다. 보통 Exception이 발생하는 경우, FireBase Crashlytics 등..