One fix, for the largest documents Gander is asked to open.
Large PDFs no longer bring the phone to its knees
(#16, thanks @logannc, who found this and worked out that scrolling made it worse, and @mjschwart, who reproduced it on quite different hardware with a much heavier file)
Gander lays out an empty box for every page in a document before it draws any of them, so the scrollbar is the right length from the moment it opens. Until now those boxes had no size: each was 300 by 150 pixels, a business card standing in for a page.
That was visible as a column of small white rectangles whenever you scrolled faster than pages could be drawn, and it was the cause of a good deal more besides. Gander decides which pages are close enough to be worth drawing by looking a fixed distance ahead of you, and at that size about fifty of them fitted in the distance meant to hold three or four. So it started fifty at once, kept every one it had ever finished, and kept the artwork it decoded for them on top.
On a 357-page illustrated rulebook, one flick through it took the renderer past 900 MB and Android killed it, sometimes taking other apps' browser windows down with it.
The boxes are now the shape of the page they stand for, no more than three pages are ever drawn at once, a page you have flung past stops being drawn rather than finishing into a bitmap nobody will see, and a page far enough behind you gives back both its bitmap and its artwork. How far ahead Gander draws is now counted in pages rather than in screenfuls, which is the only version of that number that means the same thing when you turn the phone sideways.
The rulebook now sits flat at about 180 MB however it is read, and a 520-page, 114 MB ebook at about 300 MB, neither of them climbing.
Install
Gander-1.12.apk runs on every phone. The app ships no native code, so there is no architecture to choose.
Viewing PDFs needs Android System WebView 125 or newer (May 2024). Any phone still receiving WebView updates is well past that.
Verify before installing if you like. Signing certificate SHA-256:
5B:5C:F6:4A:94:23:7C:D5:F0:E0:85:76:00:38:BC:1C:EB:DF:18:DA:BA:5C:B3:EA:CA:7C:15:9F:22:A7:E2:4B
Help get Gander onto the Play Store. Publishing from a personal developer account needs 12 testers opted in for 14 days, and Google now checks they actually used the app rather than just installing it. If you can spare two minutes: join gander-testers@googlegroups.com with your Play Store Google account, then use this opt-in link — https://play.google.com/apps/testing/com.arjun.gander — and set it as your default PDF viewer for two weeks. Details in the pinned Discussion.