Skip to content

Facing memory leaks and hanging UI using IO shimmer  #75

@saurabhdhillon

Description

@saurabhdhillon

I have attached the log files i received from @baoyongzhang/blockcanary, the library helps in finding UI block issues.
After few minutes of using screens integrated with shimmer layout, i start loosing frames and screen starts laging. On page open i make shimmer visibility VISIBLE and start the animation, on success data from api i stop animation and make shimmer view visibility GONE. I repeat the process multiple time and receive these logs.
PFA logs and screenshots.

qualifier = null
versionName = 1.0.1
versionCode = 2
imei = 868263031622090
uid = null
network = null
model = ONEPLUS A6000
apilevel = 28 9
cpuCore = 8
processName = com.ed.ambience
freeMemory = 1131008
totalMemory = 5769112
timecost = 6822
threadtimecost = 1910
timestart = 02-20 23:49:22.123
timeend = 02-20 23:49:28.945
cpubusy = false
cpurate = null
stack = 02-20 23:49:26.987
java.util.ArrayList.remove(ArrayList.java:538)
android.view.ViewTreeObserver$CopyOnWriteArray.remove(ViewTreeObserver.java:1189)
android.view.ViewTreeObserver.removeOnPreDrawListener(ViewTreeObserver.java:617)
io.supercharge.shimmerlayout.ShimmerLayout$1.onPreDraw(ShimmerLayout.java:131)
android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:977)
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2673)
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1635)
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7795)
android.view.Choreographer$CallbackRecord.run(Choreographer.java:1172)
android.view.Choreographer.doCallbacks(Choreographer.java:984)
android.view.Choreographer.doFrame(Choreographer.java:809)
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1158)
android.os.Handler.handleCallback(Handler.java:873)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:193)
android.app.ActivityThread.main(ActivityThread.java:6863)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

02-20 23:49:27.313

java.util.ArrayList.remove(ArrayList.java:538)
android.view.ViewTreeObserver$CopyOnWriteArray.remove(ViewTreeObserver.java:1189)
android.view.ViewTreeObserver.removeOnPreDrawListener(ViewTreeObserver.java:617)
io.supercharge.shimmerlayout.ShimmerLayout$1.onPreDraw(ShimmerLayout.java:131)
android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:977)
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2673)
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1635)
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7795)
android.view.Choreographer$CallbackRecord.run(Choreographer.java:1172)
android.view.Choreographer.doCallbacks(Choreographer.java:984)
android.view.Choreographer.doFrame(Choreographer.java:809)
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1158)
android.os.Handler.handleCallback(Handler.java:873)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:193)
android.app.ActivityThread.main(ActivityThread.java:6863)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

02-20 23:49:27.651

java.util.ArrayList.remove(ArrayList.java:538)
android.view.ViewTreeObserver$CopyOnWriteArray.remove(ViewTreeObserver.java:1189)
android.view.ViewTreeObserver.removeOnPreDrawListener(ViewTreeObserver.java:617)
io.supercharge.shimmerlayout.ShimmerLayout$1.onPreDraw(ShimmerLayout.java:131)
android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:977)
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2673)
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1635)
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7795)
android.view.Choreographer$CallbackRecord.run(Choreographer.java:1172)
android.view.Choreographer.doCallbacks(Choreographer.java:984)
android.view.Choreographer.doFrame(Choreographer.java:809)
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1158)
android.os.Handler.handleCallback(Handler.java:873)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:193)
android.app.ActivityThread.main(ActivityThread.java:6863)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

02-20 23:49:27.991

java.util.ArrayList.remove(ArrayList.java:538)
android.view.ViewTreeObserver$CopyOnWriteArray.remove(ViewTreeObserver.java:1189)
android.view.ViewTreeObserver.removeOnPreDrawListener(ViewTreeObserver.java:617)
io.supercharge.shimmerlayout.ShimmerLayout$1.onPreDraw(ShimmerLayout.java:131)
android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:977)
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2673)
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1635)
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7795)
android.view.Choreographer$CallbackRecord.run(Choreographer.java:1172)
android.view.Choreographer.doCallbacks(Choreographer.java:984)
android.view.Choreographer.doFrame(Choreographer.java:809)
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1158)
android.os.Handler.handleCallback(Handler.java:873)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:193)
android.app.ActivityThread.main(ActivityThread.java:6863)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

02-20 23:49:28.332

java.util.ArrayList.remove(ArrayList.java:538)
android.view.ViewTreeObserver$CopyOnWriteArray.remove(ViewTreeObserver.java:1189)
android.view.ViewTreeObserver.removeOnPreDrawListener(ViewTreeObserver.java:617)
io.supercharge.shimmerlayout.ShimmerLayout$1.onPreDraw(ShimmerLayout.java:131)
android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:977)
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2673)
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1635)
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7795)
android.view.Choreographer$CallbackRecord.run(Choreographer.java:1172)
android.view.Choreographer.doCallbacks(Choreographer.java:984)
android.view.Choreographer.doFrame(Choreographer.java:809)
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1158)
android.os.Handler.handleCallback(Handler.java:873)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:193)
android.app.ActivityThread.main(ActivityThread.java:6863)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

02-20 23:49:28.665

java.util.ArrayList.remove(ArrayList.java:538)
android.view.ViewTreeObserver$CopyOnWriteArray.remove(ViewTreeObserver.java:1189)
android.view.ViewTreeObserver.removeOnPreDrawListener(ViewTreeObserver.java:617)
io.supercharge.shimmerlayout.ShimmerLayout$1.onPreDraw(ShimmerLayout.java:131)
android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:977)
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2673)
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1635)
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7795)
android.view.Choreographer$CallbackRecord.run(Choreographer.java:1172)
android.view.Choreographer.doCallbacks(Choreographer.java:984)
android.view.Choreographer.doFrame(Choreographer.java:809)
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1158)
android.os.Handler.handleCallback(Handler.java:873)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:193)
android.app.ActivityThread.main(ActivityThread.java:6863)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

screenshot_20190221-121803

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions