4

タブFragmentPagerAdapterを切り替えます。ActionBarSherlockタブを切り替えると、1 つを非Fragment表示にして別のタブを表示しFragmentます。

ここで、メモリの消費について質問があります。非表示にした場合、どのようにFragmentManagerリリースFragmentsされますか? それ以上ある場合、メモリからFragments手動で削除することは可能ですか?Fragment Object

a をデタッチするFragmentとオブジェクトが保存され、 a を削除するFragmentと からのみ削除され、Viewを設定するFragment = nullFragmentは解放されず、常にフラグメントが取得されます。myActivity.getSupportFragmentManager().findFragmentByTag(myTag);

FragmentManager必要に応じて をリリースする方法Viewsと、それを実現する方法を誰かが説明してもらえますか?

4

1 に答える 1

3

アンドロイドのドキュメントから。

ユーザーがページに戻ることができる限り、フラグメント マネージャーに永続的に保持されるフラグメントとして各ページを表す PagerAdapter の実装。

したがって、メモリの問題が心配で FragmentPagerAdapter を使用しない場合は、代わりにFragmentStatePagerAdapterを使用することをお勧めします。

FragmentStatePagerAdapter では、ページがユーザーに表示されない場合、フラグメント全体が破棄され、そのフラグメントの保存された状態のみが保持されます。これにより、ページャーは、FragmentPagerAdapter と比較して、訪問した各ページに関連付けられたメモリをはるかに少なく保持できますが、ページを切り替えるときにオーバーヘッドが増える可能性があります。

FragmentStatePagerAdapter はリストビューのように機能し、メモリの点でより効率的です。

于 2013-01-30T04:47:44.417 に答える