LivingWithHippos/unchained-android

Various crashes from the play console

LivingWithHippos opened this issue · 3 comments

Issues with the percent_format string in fragment_torrent_details.xml, replace with logic in the fragment

Exception android.content.res.Resources$NotFoundException:
  at android.content.res.ResourcesImpl.getQuantityText (ResourcesImpl.java:331)
  at android.content.res.Resources.getQuantityText (Resources.java:537)
  at android.content.res.Resources.getQuantityString (Resources.java:613)
  at com.github.livingwithhippos.unchained.databinding.FragmentTorrentDetailsBindingImpl.executeBindings (FragmentTorrentDetailsBindingImpl.java:360)
  at androidx.databinding.ViewDataBinding.executeBindingsInternal (ViewDataBinding.java)
  at androidx.databinding.ViewDataBinding.executePendingBindings (ViewDataBinding.java)
  at androidx.databinding.ViewDataBinding$7.run (ViewDataBinding.java:52)
  at androidx.databinding.ViewDataBinding$8.doFrame (ViewDataBinding.java:5)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1158)
  at android.view.Choreographer.doCallbacks (Choreographer.java:950)
  at android.view.Choreographer.doFrame (Choreographer.java:874)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1142)
  at android.os.Handler.handleCallback (Handler.java:938)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:210)
  at android.os.Looper.loop (Looper.java:299)
  at android.app.ActivityThread.main (ActivityThread.java:8309)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:556)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1038)
<TextView
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:text="@{@string/percent_format(torrent.progress), default=`75 %`}"
                            android:textAlignment="center"
                            android:textStyle="bold" />
                            
<TextView
                        android:id="@+id/tvProgress"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="5dp"
                        android:text="@{@string/percent_format(torrent.progress), default=`90%`}"
                        android:visibility="@{torrent.progress >=0 &amp;&amp; torrent.progress &lt;100 ? View.VISIBLE : View.GONE, default=visible}"
                        app:layout_constraintBottom_toBottomOf="@+id/tvDownloadOverline"
                        app:layout_constraintStart_toEndOf="@id/tvDownloadOverline" />

also found in item_list_torrent.xml

<TextView
                    android:id="@+id/tvProgress"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:visibility="@{item.progress >=0 &amp;&amp; item.progress &lt;100 ? View.VISIBLE : View.GONE, default=visible}"
                    android:text="@{@string/percent_format(item.progress), default=`90%`}"
                    android:layout_marginStart="5dp"
                    android:textColor="?attr/colorPrimary"
                    app:layout_constraintBottom_toBottomOf="@+id/tvTitle"
                    app:layout_constraintStart_toEndOf="@id/tvTitle" />

Also some other binding in item_list_search.xml

Possibly linked to the torrent notification or download notification service since it references binder

Exception java.lang.RuntimeException:
  at android.app.ActivityClient.activityStopped (ActivityClient.java:102)
  at android.app.servertransaction.PendingTransactionActions$StopInfo.run (PendingTransactionActions.java:143)
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:211)
  at android.os.Looper.loop (Looper.java:300)
  at android.app.ActivityThread.main (ActivityThread.java:8289)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:559)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:954)
Caused by android.os.TransactionTooLargeException:
  at android.os.BinderProxy.transactNative
  at android.os.BinderProxy.transact (BinderProxy.java:646)
  at android.app.IActivityClientController$Stub$Proxy.activityStopped (IActivityClientController.java:1266)
  at android.app.ActivityClient.activityStopped (ActivityClient.java:99)

Memory leak or something on a recyclerview, see https://stackoverflow.com/questions/61606656/viewpager2-crash

Exception java.lang.IllegalArgumentException:
  at androidx.core.util.Preconditions.checkArgument (Preconditions.java)
  at androidx.recyclerview.selection.DefaultSelectionTracker.anchorRange (DefaultSelectionTracker.java)
  at androidx.recyclerview.selection.MotionInputHandler.selectItem (MotionInputHandler.java:43)
  at androidx.recyclerview.selection.TouchInputHandler.onSingleTapUp (TouchInputHandler.java:57)
  at androidx.recyclerview.selection.GestureRouter.onSingleTapUp (GestureRouter.java)
  at android.view.GestureDetector.onTouchEvent (GestureDetector.java:752)
  at androidx.recyclerview.selection.GestureDetectorWrapper.onInterceptTouchEvent (GestureDetectorWrapper.java:26)
  at androidx.recyclerview.widget.RecyclerView.findInterceptingOnItemTouchListener (RecyclerView.java)
  at androidx.recyclerview.widget.RecyclerView.onInterceptTouchEvent (RecyclerView.java:10)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2653)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2802)
  at com.android.internal.policy.DecorView.superDispatchTouchEvent (DecorView.java:500)
  at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1905)
  at android.app.Activity.dispatchTouchEvent (Activity.java:4298)
  at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java)
  at com.android.internal.policy.DecorView.dispatchTouchEvent (DecorView.java:458)
  at android.view.View.dispatchPointerEvent (View.java:15269)
  at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:6757)
  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:6557)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6013)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:6070)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:6036)
  at android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:6201)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:6044)
  at android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:6258)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6017)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:6070)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:6036)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:6044)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6017)
  at android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:9103)
  at android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:9054)
  at android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:9023)
  at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:9226)
  at android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:267)
  at android.os.MessageQueue.nativePollOnce
  at android.os.MessageQueue.next (MessageQueue.java:335)
  at android.os.Looper.loopOnce (Looper.java:161)
  at android.os.Looper.loop (Looper.java:288)
  at android.app.ActivityThread.main (ActivityThread.java:7884)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936)

Timeout on a network call, they should all be try catched

Exception java.net.SocketTimeoutException: timeout
  at okio.SocketAsyncTimeout.newTimeoutException (SocketAsyncTimeout.java)
  at okio.AsyncTimeout.access$newTimeoutException (AsyncTimeout.java:40)
  at okio.AsyncTimeout$source$1.read (AsyncTimeout.java:40)
  at okio.RealBufferedSource.indexOf (RealBufferedSource.java:50)
  at okio.RealBufferedSource.Y (RealBufferedSource.java:41)
  at okhttp3.internal.http1.HeadersReader.readLine (HeadersReader.java:19)
  at okhttp3.internal.http1.Http1ExchangeCodec.readResponseHeaders (Http1ExchangeCodec.java:19)
  at okhttp3.internal.connection.Exchange.b (Exchange.java:3)
  at okhttp3.internal.http.CallServerInterceptor.intercept (CallServerInterceptor.java:166)
  at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:133)
  at okhttp3.internal.connection.ConnectInterceptor.intercept (ConnectInterceptor.java:102)
  at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:133)
  at okhttp3.internal.cache.CacheInterceptor.intercept (CacheInterceptor.java:148)
  at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:133)
  at okhttp3.internal.http.BridgeInterceptor.intercept (BridgeInterceptor.java:142)
  at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:133)
  at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept (RetryAndFollowUpInterceptor.java:154)
  at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:133)
  at com.github.livingwithhippos.unchained.data.model.EmptyBodyInterceptor.a (EmptyBodyInterceptor.java:3)
  at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:133)
  at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp (RealCall.java:96)
  at okhttp3.internal.connection.RealCall$AsyncCall.run (RealCall.java:36)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1137)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:637)
  at java.lang.Thread.run (Thread.java:1012)
Caused by java.net.SocketException: Socket closed
  at java.net.SocketInputStream.read (SocketInputStream.java:188)
  at java.net.SocketInputStream.read (SocketInputStream.java:143)
  at okio.InputStreamSource.K (InputStreamSource.java:46)
  at okio.AsyncTimeout$source$1.K (AsyncTimeout.java:13)