↓
タブクリックで index : 15 のページに移動
↓
タブクリックで index : 4 のページに移動
したときの Fragment のライフサイクルの結果は次のようになります。
- : onCreate : 0
- : onCreate : 12
- : onCreate : 13
- : onCreate : 14
- : onCreate : 15
- : onDestroy : 0
- : onDestroy : 12
- : onCreate : 7
- : onDestroy : 13
- : onCreate : 6
- : onCreate : 5
- : onDestroy : 14
- : onCreate : 4
- : onDestroy : 15
- : onDestroy : 7
同じように index : 15 から index : 4 のページに移動するときは index : 7 のページから作られていることがわかります。
この 3 ページ前からというロジックは ViewPager2 の setCurrentItemInternal() に実装されています。
- void setCurrentItemInternal(int item, boolean smoothScroll) {
- ...
- // For smooth scroll, pre-jump to nearby item for long jumps.
- if (Math.abs(item - previousItem) > 3) {
- mRecyclerView.scrollToPosition(item > previousItem ? item - 3 : item + 3);
- // TODO(b/114361680): call smoothScrollToPosition synchronously (blocked by b/114019007)
- mRecyclerView.post(new SmoothScrollToPosition(item, mRecyclerView));
- } else {
- mRecyclerView.smoothScrollToPosition(item);
- }
- }
0 件のコメント:
コメントを投稿