Skip to content

Crash when swiping trough images. #17231

Closed

Description

@Yougoshatenshi

⚠️ Before posting ⚠️

  • This is a bug, not a question or an enhancement.
  • I've searched for similar issues and didn't find a duplicate.
  • I've written a clear and descriptive title for this issue, not just "Bug" or "Crash".
  • I agree to follow Nextcloud's Code of Conduct.

Steps to reproduce

  1. Open larger folder with (non local) photos
  2. open image
  3. scroll trough a few ~15 images.

Expected behaviour

Not to crash.

Actual behaviour

Crashing after a switching between some images.

Android version

16

Device brand and model

Poco M2012K11AG

Stock or custom OS?

Custom (explain in "additional information")

Nextcloud android app version

20260619 dev

Nextcloud server version

33.0.5

Using a reverse proxy?

No

Android logs

Exception in thread "main" android.net.ConnectivityManager$TooManyRequestsException
    at android.net.ConnectivityManager.convertServiceException(ConnectivityManager.java:4501)
    at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4786)
    at android.net.ConnectivityManager.registerDefaultNetworkCallbackForUid(ConnectivityManager.java:5467)
    at android.net.ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.java:5434)
    at android.net.ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.java:5408)
    at com.nextcloud.client.network.ConnectivityServiceImpl.<init>(ConnectivityServiceImpl.kt:71)
    at com.nextcloud.client.network.NetworkModule.connectivityService(NetworkModule.java:27)
    at com.nextcloud.client.network.NetworkModule_ConnectivityServiceFactory.connectivityService(NetworkModule_ConnectivityServiceFactory.java:66)
    at com.nextcloud.client.di.DaggerAppComponent$AppComponentImpl.connectivityService(DaggerAppComponent.java:6895)
    at com.nextcloud.client.di.DaggerAppComponent$PreviewImageFragmentSubcomponentImpl.injectPreviewImageFragment(DaggerAppComponent.java:4041)
    at com.nextcloud.client.di.DaggerAppComponent$PreviewImageFragmentSubcomponentImpl.inject(DaggerAppComponent.java:4036)
    at com.nextcloud.client.di.DaggerAppComponent$PreviewImageFragmentSubcomponentImpl.inject(DaggerAppComponent.java:4022)
    at dagger.android.DispatchingAndroidInjector.maybeInject(DispatchingAndroidInjector.java:113)
    at dagger.android.DispatchingAndroidInjector.inject(DispatchingAndroidInjector.java:134)
    at dagger.android.support.AndroidSupportInjection.inject(AndroidSupportInjection.java:75)
    at dagger.android.support.AndroidSupportInjection.inject(AndroidSupportInjection.java:67)
    at com.nextcloud.client.di.FragmentInjector.onFragmentPreAttached(FragmentInjector.kt:19)
    at androidx.fragment.app.FragmentLifecycleCallbacksDispatcher.dispatchOnFragmentPreAttached(FragmentLifecycleCallbacksDispatcher.kt:78)
    at androidx.fragment.app.FragmentStateManager.attach(FragmentStateManager.java:509)
    at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:279)
    at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2214)
    at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2109)
    at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:2002)
    at androidx.fragment.app.BackStackRecord.commitNow(BackStackRecord.java:317)
    at androidx.viewpager2.adapter.FragmentStateAdapter.placeFragmentInViewHolder(FragmentStateAdapter.java:343)
    at androidx.viewpager2.adapter.FragmentStateAdapter.onViewAttachedToWindow(FragmentStateAdapter.java:274)
    at androidx.viewpager2.adapter.FragmentStateAdapter.onViewAttachedToWindow(FragmentStateAdapter.java:74)
    at androidx.recyclerview.widget.RecyclerView.dispatchChildAttached(RecyclerView.java:8377)
    at androidx.recyclerview.widget.RecyclerView$5.addView(RecyclerView.java:954)
    at androidx.recyclerview.widget.ChildHelper.addView(ChildHelper.java:131)
    at androidx.recyclerview.widget.RecyclerView$LayoutManager.addViewInt(RecyclerView.java:9430)
    at androidx.recyclerview.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:9388)
    at androidx.recyclerview.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:9375)
    at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1676)
    at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1622)
    at androidx.recyclerview.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1425)
    at androidx.recyclerview.widget.LinearLayoutManager.scrollHorizontallyBy(LinearLayoutManager.java:1145)
    at androidx.recyclerview.widget.RecyclerView.scrollStep(RecyclerView.java:2047)
    at androidx.recyclerview.widget.RecyclerView.scrollByInternal(RecyclerView.java:2149)
    at androidx.recyclerview.widget.RecyclerView.onTouchEvent(RecyclerView.java:3867)
    at androidx.viewpager2.widget.ViewPager2$RecyclerViewImpl.onTouchEvent(ViewPager2.java:998)
    at android.view.View.performOnTouchCallback(View.java:16820)
    at android.view.View.dispatchTouchEvent(View.java:16773)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3137)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2811)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
    at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:503)
    at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:2017)
    at android.app.Activity.dispatchTouchEvent(Activity.java:4665)
    at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
    at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:441)
    at android.view.View.dispatchPointerEvent(View.java:17110)
    at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:8349)
    at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:8103)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7480)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7537)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7503)
    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:7674)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7511)
    at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:7731)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7484)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7537)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7503)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7511)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7484)
    at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:10697)
    at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:10648)
    at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:10616)
    at android.view.ViewRootImpl.processRawInputEvent(ViewRootImpl.java:11039)
    at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:10825)
    at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:277)
    at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
    at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:253)
    at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:10796)
    at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:10888)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1630)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1639)
    at android.view.Choreographer.doCallbacks(Choreographer.java:1235)
    at android.view.Choreographer.doFrame(Choreographer.java:1157)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1613)
    at android.os.Handler.handleCallback(Handler.java:1070)
    at android.os.Handler.dispatchMessage(Handler.java:125)
    at android.os.Looper.dispatchMessage(Looper.java:333)
    at android.os.Looper.loopOnce(Looper.java:263)
    at android.os.Looper.loop(Looper.java:367)
    at android.app.ActivityThread.main(ActivityThread.java:9287)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:566)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)

Server error logs

Additional information

Lineage 23.2

Activity

  1. Gdo23678 commented on Jun 22, 2026

    @Gdo23678

    Just wondering if this might be related to the gallery loading issue in #17162?

    If the app is trying to fetch the whole media library at once without pagination, it might also instantiate way too many PreviewImageFragments in the background, which then leak these NetworkCallbacks.

  2. alperozturk96 commented on Jul 2, 2026

    @alperozturk96
    Collaborator

    Hello

    Could you please try with last generated QA APK?

    #17250

  3. Yougoshatenshi commented on Jul 2, 2026

    @Yougoshatenshi
    Author

    Hello

    Could you please try with last generated QA APK?

    #17250

    Thanks, with QA i cant get it to crash anymore. I tried a few more folders.
    Overall the responsiveness of how the folders load seems a bit better too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions