Приложение убивается, но onTrimMemory не вызывается - PullRequest
0 голосов
/ 31 января 2019

Мое приложение убивается с помощью OOM, но методы onTrimMemory не называются

Я использую Fresco для кэширования изображений, потому что у меня много изображений на устройствах 4.4, мое приложение убивается с помощью OOM.Я попытался переопределить методы, такие как onTrimMemory (), из обеих Активов, которые отображают изображения, и класса Приложения, где я пытаюсь очистить кеш, чтобы избежать OOM, но мое приложение все еще падало.После этого я попытался настроить журналы в этих методах и заметил, что, хотя мое приложение аварийно завершает работу, эти методы не называются

Не так много кода, чтобы показать:

override fun onTrimMemory(level: Int) {
    Timber.d("GalleryActivity onTrimMemory %s", level)
    if (level == ComponentCallbacks2.TRIM_MEMORY_RUNNING_LOW) {
        Fresco.getImagePipeline().clearCaches()
    }
}

Яделать что-то не так или я не так понимаю?Разве эти методы не должны вызываться, когда приложение занимает слишком много памяти?

Есть ли способы решить эту проблему?Спасибо

Обновление, вот как выглядит журнал:

на android.graphics.Bitmap.createBitmap (Bitmap.java:913) на android.graphics.drawable.VectorDrawable $ VectorDrawableState.createCachedBitmapIfNeeded(VectorDrawable.java:834) на android.graphics.drawable.VectorDrawable.draw (VectorDrawable.java:318) на android.graphics.drawable.LayerDrawable.draw (LayerDrawable.java:916) на com.facebook.drawee.drawable.ForwardingDrawable.draw (ForwardingDrawable.java:185) на com.facebook.drawee.drawable.ScaleTypeDrawable.draw (ScaleTypeDrawable.java:123) на com.facebook.drawee.drawable.FadeDrawable.drawDrawableWithAlpha на fadeD.facebook.drawee.drawable.FadeDrawable.draw (FadeDrawable.java:289) в com.facebook.drawee.drawable.ForwardingDrawable.draw (ForwardingDrawable.java:185) в com.facebook.drawee.generic.RootDrawable.draw (RootDrawable.draw (RootDrawable.draw (RootDrawable.draw.java: 81)

1 Ответ

0 голосов
/ 31 января 2019

Я бы предложил добавить отдельный Сервис в приложение для этих целей и попытаться использовать onLowMemory , onTrimMemory .

С другой стороны, странно, что при использовании Frescoприводит к сбоям OOM.В качестве одного из решений evictFromMemoryCache может использоваться на устройствах с указанным уровнем API, если это не будет нарушать ваши требования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...