以下の内容はhttps://memo.furyutei.com/entry/20260314/1773487949より取得しました。


Android版Perfect Viewerで見開き表示をしていると動作が不安定になる件と、その対策について

12年以上と長らく愛用しているAndroid用の画像ビューアアプリ「Perfect Viewer

play.google.com

だが、最近、タブレット上で見開き表示にて使用することが増えたのに伴い、頻繁に動作が不安定になる不具合が発生して困っていた。

現象と、私的に調査・対策(?)した内容について、備忘のために記事にして残しておく。



どんな不具合か?

最新版のPerfect Viewer(2026/03/14現在ではVersion 5.0.4.4)で、電子書籍ファイル(PDFや画像をまとめたZIPファイル)を閲覧しているとき、数百ページくらいめくった所で、突然動作が極端に重くなり*1、そのうちフリーズしたり異常終了しまう。

これは見開きで表示している状態で発生するようで*2、単ページ表示の場合には(少なくとも自分のところでは)問題ない。

なお、現象が発生時してアプリの動作が重くなったときにはシステム全体の動作も重くなっていた(例えば電源ボタンにすぐには反応しない、など)。

調査

アプリの動作が重くなったときにシステム全体に影響していることから、メモリリークが発生して空きメモリが無くなっているのではないかと推測した。

そこで、一連のページめくり前後のPerfect Viewerの使用メモリ(システム情報に記載されているので確認可能)を調査してみた。

環境

  • OPPO Pad Air(メモリ4G(+拡張4G)*3
  • ColorOS 13(Android 13)
  • Perfect Viewer Version 5.0.4.4(※最大キャッシュファイルの容量:128GB)

テスト内容

  • 280ページ(約50GB)の電子書籍ファイル(画像ZIPファイル)を最初から最後までページを手動でめくり(これを1周とする)、前後の使用メモリを確認
  • 画面の向きは縦で、ページのレイアウトのみ

    • 単ページ表示されるように「デフォルト」にした場合
    • 見開き表示されるように「自動見開き表示」にした場合

    を切り替え

結果

単ページ表示

単ページ表示1周目・開始時

単ページ表示1周目・終了時

単ページ表示2周目・開始時

単ページ表示2周目・終了時

周目 開始時 終了時
1 213.1M 404.1M
2 401.3M 420.4M
見開き表示

見開き表示1周目・開始時

見開き表示1周目・終了時

見開き表示2周目・開始時

見開き表示2周目・終了時

周目 開始時 終了時
1 222.2M 329.0M
2 343.6M 852.8M

考察

1周目はむしろ単ページ表示の方が見開き表示よりも使用メモリが増している(画面の向きが縦のため、単ページは画像が画面いっぱいになるのに対して見開きだと小さくなるので、前者は後者より実メモリ使用量が大きくなると考えられるため、その差ではないかと推測)。
ただ、単ページ表示の方はキャッシュ等を考慮すれば、妥当な範囲に収まっていると考えられるし、2周目での増加分もそれほどではない。

ところが、2周目になると、見開き表示の使用メモリが極端に増加している*4ことから、あるタイミングからメモリリークが発生している可能性があるものと考える。

なお、Android 16スマートフォン(SHARP AQUOS sense9)で同様のテストを試みた結果

こちらでも同様の傾向があった。

対策

開発者は「Perfect Viewer X」の使用を推奨

不具合の内容をまとめて、開発者のRookie Studio様にメールで報告したところ、

  • Android版Perfect Viewerは開発を終了しており、今後のアップデートや不具合修正の予定はない
  • 新しいクロスプラットフォーム版である「Perfect Viewer X」の使用を推奨(こちらでは見開き表示でのメモリリークは発生していない)

旨のご返答があった。

というわけで、

rookiestudio.uk

play.google.com

こちらに移行するというのが、公式な対策となる。  

Version 5.0.2.1へのダウングレード(非公式)

とはいえ、Perfect Viewer Xの方は、無印(Android版)にあった機能が搭載されていなかったり、動作が安定していないなどの不具合があったりと、私的にはまだ移行できるレベルにないという認識。

なので、ダメ元でAndroid版の旧版を順次入れて試してみたところ*5、見開き時のメモリリークが発生しなかったもののうちで最も新しいものは「Version 5.0.2.1」だった。

このことから、Version 5.0.2.1→5.0.2.2の更新時に不具合が入り込んだものと推測できる(最新版に至るまで同様の不具合が確認できること、更新履歴を見ていると最近のものでは頻繁に強制終了が発生していたことが垣間見られること、また比較的新しいAndroid(Android 13以降)でのクラッシュや強制終了への対応履歴も散見されるが、5.0.2.1にダウングレードしてからはAndroid 13・14・16でも手元では強制終了は今のところ発生せず安定して動作していることから、Version 5.0.2.1→5.0.2.2の更新時に入り込んだと思われる不具合は、潜在的に今回の見開き表示での不具合以外にも影響しているのではないか、と憶測している)。

よって、まだPerfect Viewer Xには移行できず、どうしても無印の方を使いたい方のうち、ダウングレードの方法をご自分で調べて適用できるという方は、自己責任の範囲でVersion 5.0.2.1(もしくはそれ以前)のapkを探し、ダウングレードして使ってみる、というのも手かも知れない。

なお、Version 5.0.2.1のリリースは2021/11/23となっており、4年以上前のバージョンであることに留意すること。

当然ながら、それ以降に追加された機能については使えず、またそれ以降のバージョンで修正された不具合等も残ったままになるので、それらが許容できるなら……という話になる。

追記(2026/03/16)

残念ながら、Version 5.0.2.1でも特定のファイルを開くとクラッシュすることがある模様。

設定によって改善したり、単ページでも発生したり(発生しなかったり)と、表題の件とは別要因かも知れないが。

参考

関連ツイート(ポスト)

この件に関する自分のツイート(ポスト)については、おおよそ、ここ

から辿れるようにぶら下げてある(つもり)。


*1:不具合が発生するタイミングは不定で、特定のファイルでのみ発生するといった傾向もないように思える

*2:画面の向きは縦(「自動見開き表示」時)でも横(「自動見開き表示」か「単ベージ/見開き自動切り替え」)でも発生

*3:Perfect Viewer上では3.5Gとして認識

*4:試みに、3周目になると、ここからさらに増加して1.3Gになった

*5:試したVersionは、4.7.1.4、5.0.0.1、5.0.1.3、5.0.2.1、5.0.2.2、5.0.2.3、5.0.2.4、5.0.3、5.0.4.1、5.0.4.2、5.0.4.3、5.0.4.4、5.0.4.5




以上の内容はhttps://memo.furyutei.com/entry/20260314/1773487949より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14