rive-app / rive-android

A runtime for interactive animations on Android
https://rive.app
MIT License
332 stars 30 forks source link

Fix leaking issue when add lifecycle observer #296

Open hoangthan opened 1 year ago

hoangthan commented 1 year ago

Since the context is using ActivityLifeCycle. So trying to add lifeCycleObserver without remove when the view is being detached will causing leak memory issue.

The lifeCycleObserver is already remove itself once the lifeCycle is reached onDestroyed. But with activity, it will be never called until the activity is going on destroyed.

umberto-sonnino commented 11 months ago

Since the context is using ActivityLifeCycle. So trying to add lifeCycleObserver without remove when the view is being detached will causing leak memory issue.

The lifeCycleObserver is already remove itself once the lifeCycle is reached onDestroyed. But with activity, it will be never called until the activity is going on destroyed.

The behavior for this flow has now been revised and adjusted by re-evaluating the LifecycleOwner on attach. Do you still the leak on the latest version?

stevezuju commented 11 months ago

Since the context is using ActivityLifeCycle. So trying to add lifeCycleObserver without remove when the view is being detached will causing leak memory issue. The lifeCycleObserver is already remove itself once the lifeCycle is reached onDestroyed. But with activity, it will be never called until the activity is going on destroyed.

The behavior for this flow has now been revised and adjusted by re-evaluating the LifecycleOwner on attach. Do you still the leak on the latest version?

Is 5.1.5 the latest version ?

stevezuju commented 11 months ago

Since the context is using ActivityLifeCycle. So trying to add lifeCycleObserver without remove when the view is being detached will causing leak memory issue. The lifeCycleObserver is already remove itself once the lifeCycle is reached onDestroyed. But with activity, it will be never called until the activity is going on destroyed.

The behavior for this flow has now been revised and adjusted by re-evaluating the LifecycleOwner on attach. Do you still the leak on the latest version?

The life-cycler you're using is activity lifecycle. The observer will be never removed in case activity not going on destroyed. You should remove the observer while the RiveTextureView is going to detached.

umberto-sonnino commented 11 months ago

Since the context is using ActivityLifeCycle. So trying to add lifeCycleObserver without remove when the view is being detached will causing leak memory issue. The lifeCycleObserver is already remove itself once the lifeCycle is reached onDestroyed. But with activity, it will be never called until the activity is going on destroyed.

The behavior for this flow has now been revised and adjusted by re-evaluating the LifecycleOwner on attach. Do you still the leak on the latest version?

The life-cycler you're using is activity lifecycle. The observer will be never removed in case activity not going on destroyed. You should remove the observer while the RiveTextureView is going to detached.

The latest version is 6.0.0, is that what you're using? Changes were introduced here but we're not referencing the Activity directly.