↓
タブクリックで 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 : 0 から index : 15 のページに移動するとき、index : 12 のページから作られていることがわかります。
同じように 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 件のコメント:
コメントを投稿