Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
RecycledViewPool
Moyuru Aizawa
June 28, 2019
Programming
1
51
RecycledViewPool
Moyuru Aizawa
June 28, 2019
Tweet
Share
More Decks by Moyuru Aizawa
See All by Moyuru Aizawa
lvla
1
170
lvla
2
1.7k
lvla
5
370
lvla
1
67
lvla
2
220
lvla
3
310
lvla
2
860
lvla
2
180
lvla
3
3.4k
Other Decks in Programming
See All in Programming
ufoo68
1
170
aratayokoyama
0
200
kenmaz
1
100
canon1ky
3
350
nauleyco
0
210
nrslib
20
13k
decoc
1
330
adoranwodo
0
220
attsumi
1
430
yamotuki
0
130
nbkouhou
9
4.7k
asumikan
0
280
Featured
See All Featured
dougneiner
119
7.8k
shpigford
368
42k
smashingmag
283
47k
moore
125
21k
jlugia
216
16k
dougneiner
55
5.4k
samanthasiow
56
6.3k
kneath
219
15k
lynnandtonic
270
16k
caitiem20
308
17k
rocio
155
11k
jmmastey
9
530
Transcript
RecycledViewPool @MoyuruAizawa
MoyuruAizawa Moyuru Aizawa Software engineer of CATS Div. CyberAgent Inc.
Previously at Pairs Div. Eureka Inc.
Recycler Scrap Heap 3FDZDMFS LayoutManager View View View Recycled ViewPool
View View View Adapter RecyclerView
Recycler Scrap Heap 3FDZDMFS LayoutManager View View View Recycled ViewPool
View View View Adapter RecyclerView
Recycler Scrap Heap 3FDZDMFS LayoutManager Recycled ViewPool View View View
Adapter RecyclerView
Recycler Scrap Heap 3FDZDMFS LayoutManager Recycled ViewPool Adapter RecyclerView
3FDZDMFE7JFX1PPM Recycled ViewPool
3FDZDMFE7JFX1PPM Recycled ViewPool RecyclerView RecyclerView RecyclerView
3FDZDMFE7JFX1PPM Activity
3FDZDMFE7JFX1PPM Activity Fragment Fragment Fragment
3FDZDMFE7JFX1PPM Activity Fragment Fragment Fragment Recycler View Recycler View Recycler
View
3FDZDMFE7JFX1PPM Activity Fragment Fragment Fragment Recycler View Recycler View Recycler
View Recycled ViewPool
“To maximize view recycling we share the same view pool
across all EpoxyRecyclerView instances in the same Activity.” BJSCOCFQPYZ&QPYZ3FDZDMFS7JFX
/BWJHBUJPO
class RecycledViewPoolFactory { private val viewPools = SparseArray<RecycledViewPool>() private fun
create(lifecycleOwner: LifecycleOwner): RecycledViewPool { viewPools.get(lifecycleOwner.hashCode())?.let { return it } val viewPool = RecycledViewPool() viewPools.put(lifecycleOwner.hashCode(), viewPool) lifecycleOwner.lifecycle .addObserver(LifecycleEventObserver { _, event -> if (event == Lifecycle.Event.ON_DESTROY) { viewPool.clear() viewPools.remove(lifecycleOwner.hashCode()) } }) return viewPool } } 3FDZDMFE7JFX1PPM'BDUPSZ
class RecycledViewPoolFactory { private val viewPools = SparseArray<RecycledViewPool>() private fun
create(lifecycleOwner: LifecycleOwner): RecycledViewPool { viewPools.get(lifecycleOwner.hashCode())?.let { return it } val viewPool = RecycledViewPool() viewPools.put(lifecycleOwner.hashCode(), viewPool) lifecycleOwner.lifecycle .addObserver(LifecycleEventObserver { _, event -> if (event == Lifecycle.Event.ON_DESTROY) { viewPool.clear() viewPools.remove(lifecycleOwner.hashCode()) } }) return viewPool } } 3FDZDMFE7JFX1PPM'BDUPSZ
class RecycledViewPoolFactory { private val viewPools = SparseArray<RecycledViewPool>() private fun
create(lifecycleOwner: LifecycleOwner): RecycledViewPool { viewPools.get(lifecycleOwner.hashCode())?.let { return it } val viewPool = RecycledViewPool() viewPools.put(lifecycleOwner.hashCode(), viewPool) lifecycleOwner.lifecycle .addObserver(LifecycleEventObserver { _, event -> if (event == Lifecycle.Event.ON_DESTROY) { viewPool.clear() viewPools.remove(lifecycleOwner.hashCode()) } }) return viewPool } } 3FDZDMFE7JFX1PPM'BDUPSZ
class RecycledViewPoolFactory { private val viewPools = SparseArray<RecycledViewPool>() private fun
create(lifecycleOwner: LifecycleOwner): RecycledViewPool { viewPools.get(lifecycleOwner.hashCode())?.let { return it } val viewPool = RecycledViewPool() viewPools.put(lifecycleOwner.hashCode(), viewPool) lifecycleOwner.lifecycle .addObserver(LifecycleEventObserver { _, event -> if (event == Lifecycle.Event.ON_DESTROY) { viewPool.clear() viewPools.remove(lifecycleOwner.hashCode()) } }) return viewPool } } 3FDZDMFE7JFX1PPM'BDUPSZ
class RecycledViewPoolFactory { private val viewPools = SparseArray<RecycledViewPool>() private fun
create(lifecycleOwner: LifecycleOwner): RecycledViewPool { viewPools.get(lifecycleOwner.hashCode())?.let { return it } val viewPool = RecycledViewPool() viewPools.put(lifecycleOwner.hashCode(), viewPool) lifecycleOwner.lifecycle .addObserver(LifecycleEventObserver { _, event -> if (event == Lifecycle.Event.ON_DESTROY) { viewPool.clear() viewPools.remove(lifecycleOwner.hashCode()) } }) return viewPool } } 3FDZDMFE7JFX1PPM'BDUPSZ
class RecycledViewPoolFactory { private val viewPools = SparseArray<RecycledViewPool>() private fun
create(lifecycleOwner: LifecycleOwner): RecycledViewPool { viewPools.get(lifecycleOwner.hashCode())?.let { return it } val viewPool = RecycledViewPool() viewPools.put(lifecycleOwner.hashCode(), viewPool) lifecycleOwner.lifecycle .addObserver(LifecycleEventObserver { _, event -> if (event == Lifecycle.Event.ON_DESTROY) { viewPool.clear() viewPools.remove(lifecycleOwner.hashCode()) } }) return viewPool } } 3FDZDMFE7JFX1PPM'BDUPSZ
class RecycledViewPoolFactory { private val viewPools = SparseArray<RecycledViewPool>() private fun
create(lifecycleOwner: LifecycleOwner): RecycledViewPool { viewPools.get(lifecycleOwner.hashCode())?.let { return it } val viewPool = RecycledViewPool() viewPools.put(lifecycleOwner.hashCode(), viewPool) lifecycleOwner.lifecycle .addObserver(LifecycleEventObserver { _, event -> if (event == Lifecycle.Event.ON_DESTROY) { viewPool.clear() viewPools.remove(lifecycleOwner.hashCode()) } }) return viewPool } } 3FDZDMFE7JFX1PPM'BDUPSZ
Thank you