FragmentPagerAdapter を使用して約 6 つのタブを表示し、そのすべてが Web サーバーからデータをロードします。タブの 1 つに、サーバーから画像を読み込む WebView が含まれています。画像を生成するサーバー側のコストが高いため、WebView をリロードする呼び出しの数を減らしたいと考えています。WebView 以外のタブの場合、状態を保存し (それらの場合は単なる配列)、タブがスワイプされるとそれらを復元することができました。
問題:
- FragmentPagerAdapter を使用してスワイプして戻るたびに WebView がリロードされるため、リロード時間が長くなり、Web サーバーの負荷が高くなります。
考慮される解決策:
- ViewPager.setOffscreenPageLimit()を使用します。 これは、タブがまったく表示されない場合でも、より多くのタブが強制的に読み込まれるため、問題があります。これは私のサーバーでは不必要に高価です。
- WebView.saveState()とWebView.restoreState( ) を使用してください ドキュメントが更新され、表示状態がここで維持されなくなったことを明確にするため、このシナリオでは役に立たなくなりました。
- アクティビティを次のように設定します: android:configChanges="keyboardHidden|orientation|screenSize" これは回転の場合に機能しますが、ViewPager/FragmentPagerAdapter がタブをスワイプする場合には影響しません。
WebView.saveState()の古い動作は完璧だったように思えます...