Lottie is supported and developed on nights and weekends. Issues from Lottie sponsors will be prioritized.
Describe the bug
We are seeing some ANRs related to LottieAnimation view initialisation in low end device and we are unable to reproduce it.
stacktrace -
"main" tid=1 Runnable
#00 pc 0x000000000053a6e0 /apex/com.android.art/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+128)
#01 pc 0x00000000006f0e04 /apex/com.android.art/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, BacktraceMap*, bool) const+236)
#02 pc 0x00000000006fe690 /apex/com.android.art/lib64/libart.so (art::DumpCheckpoint::Run(art::Thread*)+208)
#03 pc 0x000000000040295c /apex/com.android.art/lib64/libart.so (art::Thread::RunCheckpointFunction()+140)
#04 pc 0x000000000075c0d0 /apex/com.android.art/lib64/libart.so (artTestSuspendFromCode+48)
#05 pc 0x000000000043ff3c /apex/com.android.art/lib64/libart.so (art_quick_test_suspend+156)
at java.lang.Class.isAnonymousClass (Class.java)
at java.lang.Class.getSimpleName (Class.java:1249)
at com.airbnb.lottie.LottieAnimationView.<clinit> (LottieAnimationView.java:71)
at java.lang.reflect.Constructor.newInstance0 (Constructor.java)
at java.lang.reflect.Constructor.newInstance (Constructor.java:343)
at android.view.LayoutInflater.createView (LayoutInflater.java:876)
at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:1064)
at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:1019)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:1181)
at android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:1142)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:1184)
at android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:1142)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:1184)
at android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:1142)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:1184)
at android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:1142)
at android.view.LayoutInflater.inflate (LayoutInflater.java:701)
at android.view.LayoutInflater.inflate (LayoutInflater.java:553)
at androidx.databinding.DataBindingUtil.inflate (DataBindingUtil.java:126)
at androidx.databinding.DataBindingUtil.inflate (DataBindingUtil.java:95)
at redacted.BaseFragment.inflate (BaseFragment.kt:51)
at redacted.AFragment.onCreateView (HomeFragment.java:375)
at redacted.BFragment.onCreateView (CatalogsFragment.java:215)
at androidx.fragment.app.Fragment.performCreateView (Fragment.java:3104)
at androidx.fragment.app.FragmentStateManager.createView (FragmentStateManager.java:524)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:261)
at androidx.fragment.app.FragmentManager.executeOpsTogether (FragmentManager.java:1890)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute (FragmentManager.java:1808)
at androidx.fragment.app.FragmentManager.execPendingActions (FragmentManager.java:1751)
at androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:2976)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated (FragmentManager.java:2886)
at androidx.fragment.app.FragmentController.dispatchActivityCreated (FragmentController.java:263)
at androidx.fragment.app.FragmentActivity.onStart (FragmentActivity.java:351)
at androidx.appcompat.app.AppCompatActivity.onStart (AppCompatActivity.java:246)
at redacted.core.impl.BaseActivity.onStart (BaseActivity.java:162)
at android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1455)
at android.app.Activity.performStart (Activity.java:8388)
at android.app.ActivityThread.handleStartActivity (ActivityThread.java:3946)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence (TransactionExecutor.java:221)
at android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2423)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loopOnce (Looper.java:233)
at android.os.Looper.loop (Looper.java:334)
at android.app.ActivityThread.main (ActivityThread.java:8348)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:582)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1065)
Steps To Reproduce
We inflate the LottieAnimationView programatically like below.
fun createLottieView(): LottieAnimationView {
val lottieView = LottieAnimationView(context)
val params = LinearLayout.LayoutParams(dpToPx(31), dpToPx(31))
params.leftMargin = dpToPx(4)
lottieView.layoutParams = params
lottieView.setAnimationFromUrl(url)
lottieView.setFailureListener { e: Throwable? ->
val param =
LinearLayout.LayoutParams(dpToPx(40), dpToPx(40))
lottieView.setPadding(dpToPx(10), dpToPx(10), dpToPx(10), dpToPx(10))
param.leftMargin = dpToPx(0)
lottieView.layoutParams = param
}
lottieView.setFallbackResource(R.drawable.ic_microphone)
lottieView.addAnimatorListener(object : Animator.AnimatorListener {
override fun onAnimationStart(p0: Animator?) {
}
override fun onAnimationEnd(p0: Animator?) {
}
override fun onAnimationCancel(p0: Animator?) {
}
override fun onAnimationRepeat(p0: Animator?) {
}
})
return lottieView
}
I think this is unrelated to Lottie and likely specific. Likely something else was going on that caused it to be slow and it happened to ANR here by coincidence.
Lottie is supported and developed on nights and weekends. Issues from Lottie sponsors will be prioritized.
Describe the bug We are seeing some ANRs related to LottieAnimation view initialisation in low end device and we are unable to reproduce it.
stacktrace -
Steps To Reproduce We inflate the
LottieAnimationView
programatically like below.Expected- No ANRs should happen