@@ -19,8 +19,8 @@ import androidx.compose.runtime.LaunchedEffect
1919import androidx.compose.ui.platform.LocalContext
2020import androidx.core.content.getSystemService
2121import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
22+ import co.touchlab.kermit.Logger
2223import coil3.gif.AnimatedImageDecoder
23- import coil3.gif.GifDecoder
2424import coil3.network.ktor3.KtorNetworkFetcherFactory
2525import coil3.request.allowRgb565
2626import com.mrl.pixiv.common.activity.BaseActivity
@@ -78,11 +78,7 @@ class MainActivity : BaseActivity() {
7878 imageLoaderBuilder = {
7979 this .allowRgb565(getSystemService<ActivityManager >()!! .isLowRamDevice)
8080 .components {
81- if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .P ) {
82- add(AnimatedImageDecoder .Factory ())
83- } else {
84- add(GifDecoder .Factory ())
85- }
81+ add(AnimatedImageDecoder .Factory ())
8682 add(KtorNetworkFetcherFactory (imageHttpClient))
8783 }
8884 },
@@ -98,6 +94,7 @@ class MainActivity : BaseActivity() {
9894 }
9995 }
10096 super .onCreate(savedInstanceState)
97+ logRecentProcessExitReasons()
10198 }
10299
103100 override fun onNewIntent (intent : Intent ) {
@@ -116,4 +113,20 @@ class MainActivity : BaseActivity() {
116113 intent
117114 }
118115 }
119- }
116+
117+ private fun logRecentProcessExitReasons () {
118+ if (Build .VERSION .SDK_INT < Build .VERSION_CODES .R ) return
119+
120+ val activityManager = getSystemService<ActivityManager >() ? : return
121+ activityManager.getHistoricalProcessExitReasons(packageName, 0 , 5 )
122+ .filter { info ->
123+ info.description?.contains(" MemoryLimiter" , ignoreCase = true ) == true
124+ }
125+ .forEach { info ->
126+ Logger .w(tag = " Android17Compat" ) {
127+ " Recent process exit may be affected by Android memory limits: " +
128+ " reason=${info.reason} , description=${info.description} "
129+ }
130+ }
131+ }
132+ }
0 commit comments