صفحه بندی
این جدول تمام مصنوعات موجود در گروه androidx.paging
را فهرست می کند.
مصنوع | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
---|---|---|---|---|
صفحه بندی-* | 3.3.4 | - | - | - |
صفحه بندی-نوشتن | 3.3.4 | - | - | - |
اعلام وابستگی ها
برای افزودن وابستگی به Paging، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven Google را بخوانید.
وابستگیهای مصنوعات مورد نیاز خود را در فایل build.gradle
برای برنامه یا ماژول خود اضافه کنید:
شیار
dependencies { def paging_version = "3.3.2" implementation "androidx.paging:paging-runtime:$paging_version" // alternatively - without Android dependencies for tests testImplementation "androidx.paging:paging-common:$paging_version" // optional - RxJava2 support implementation "androidx.paging:paging-rxjava2:$paging_version" // optional - RxJava3 support implementation "androidx.paging:paging-rxjava3:$paging_version" // optional - Guava ListenableFuture support implementation "androidx.paging:paging-guava:$paging_version" // optional - Jetpack Compose integration implementation "androidx.paging:paging-compose:3.3.2" }
کاتلین
dependencies { val paging_version = "3.3.2" implementation("androidx.paging:paging-runtime:$paging_version") // alternatively - without Android dependencies for tests testImplementation("androidx.paging:paging-common:$paging_version") // optional - RxJava2 support implementation("androidx.paging:paging-rxjava2:$paging_version") // optional - RxJava3 support implementation("androidx.paging:paging-rxjava3:$paging_version") // optional - Guava ListenableFuture support implementation("androidx.paging:paging-guava:$paging_version") // optional - Jetpack Compose integration implementation("androidx.paging:paging-compose:3.3.2") }
برای اطلاعات در مورد استفاده از پسوندهای Kotlin، به مستندات ktx مراجعه کنید.
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت مراجعه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 3.3
نسخه 3.3.4
13 نوامبر 2024
androidx.paging:paging-*:3.3.4
منتشر شد. نسخه 3.3.4 شامل این commit ها است.
رفع اشکال
- آزمایشهای واحد Android با کشیدن صفحه 3.3 یا جدیدتر، دیگر خطایی مانند
Method isLoggable in android.util.Log not mocked
. ( Ia9400 , b/331684448 )
نسخه 3.3.2
7 آگوست 2024
androidx.paging:paging-*:3.3.2
منتشر شد. نسخه 3.3.2 شامل این commit ها است.
ویژگی های جدید
-
paging-common
وpaging-testing
اهداف جدید Kotlin-Multippform را اضافه کرده است:watchos
،tvos
، وlinuxArm64
( 90c9768 )، ( 53e0eca )
نسخه 3.3.1
24 جولای 2024
androidx.paging:paging-*:3.3.1
منتشر شد. نسخه 3.3.1 شامل این commit ها است.
رفع اشکال
- مشکلی را برطرف کرد که در آن
AsyncPagingDataDiffer
یا APIهای ساخته شده در بالای آن مانندPagingDataAdapter
مورد استفاده باRecyclerView
قادر به راهاندازی بارهای بیشتری در هنگام بازخوانی منبع داده پشتیبان در حین پیمایش نبودند. ( I60ca5 , b/352586078 ) - رفع خرابی زمانی که هنگام پیمایش
RecyclerView
با استفاده ازPagingDataAdapter
یاAsyncPagingDataDiffer
موارد از منبع داده پشتیبان حذف میشوند. ( I8c65a , b/347649763 )
نسخه 3.3.0
14 مه 2024
androidx.paging:paging-*:3.3.0
منتشر شد. نسخه 3.3.0 شامل این commit ها است.
تغییرات مهم از 3.2.0
-
PagingDataPresenter
اکنون یک کلاس عمومی است. ارائهکنندگان چند پلتفرمی اکنون میتوانند در بالایPagingDataPresenter
ساخته شوند، نه نیاز به APIهای Paging داخلی یاAsyncPagingDataDiffer
paging-runtime
. - روشهای کمکی
LoadStates
وCombinedLoadStates
جدید درhasError
وisIdle
اضافه شد تا بررسی شود که آیاLoadStates
در حالت Error یاNotLoading
قرار دارد. همچنین یک متد جدیدawaitNotLoading()
Kotlin درFlow<CombinedLoadStates>
اضافه کرد که صبر می کند تا بارگذاری به حالتNotLoading
یا Error تبدیل شود. - اکنون
PagingData.empty()
حالت هایNotLoading
به صورت پیش فرض ارسال می کند مگر اینکهLoadStates
سفارشی به سازنده آن ارسال شود. این از رفتار موجود که در آنLoadStates
هنگام ارسال بهPagingDataAdapter
ارسال نمیکند یا وقتی که بهعنوانLazyPagingItems
جمعآوری میشود، وضعیتهای بارگیری را ارسال میکند، فاصله میگیرد. هنگامی که به عنوانLazyPagingItems
جمع آوری می شود، اکنون بلافاصله پس از ترکیب اولیه یک لیست خالی نمایش داده می شود.
سازگاری چند پلتفرمی Kotlin
Paging اکنون مصنوعات سازگار با Kotlin Multiplatform را میفرستد، تا حد زیادی به لطف کارهای بالادستی پروژه صفحهبندی چند پلتفرمی CashApp.
-
paging-common
همه API های Paging 3 را بهcommon
منتقل کرده است و اکنون علاوه بر اندروید با jvm و iOS سازگار است. -
paging-testing
کدهای خود را بهcommon
منتقل کرده است و اکنون علاوه بر اندروید با jvm و iOS نیز سازگار است. -
paging-compose
کد خود را بهcommon
منتقل کرده است و یک مصنوع اندرویدی را ارسال می کند که با پشتیبانی چند پلتفرمیandroidx.compose
مطابقت دارد. -
paging-runtime
،paging-guava
،paging-rxjava2
، وpaging-rxjava3
فقط اندروید باقی خواهند ماند.
نسخه 3.3.0-rc01
1 مه 2024
androidx.paging:paging-*:3.3.0-rc01
بدون هیچ تغییری در Paging 3.3.0-beta01 منتشر شد. نسخه 3.3.0-rc01 حاوی این commit ها است.
نسخه 3.3.0-beta01
3 آوریل 2024
androidx.paging:paging-*:3.3.0-beta01
بدون هیچ تغییر قابل توجهی منتشر شد. نسخه 3.3.0-beta01 حاوی این تعهدات است.
نسخه 3.3.0-alpha05
20 مارس 2024
androidx.paging:paging-*:3.3.0-alpha05
منتشر شد. نسخه 3.3.0-alpha05 حاوی این commit ها است.
تغییرات API
- Paging اکنون از حاشیه نویسی AndroidX
@MainThread
برای کدهای رایج استفاده می کند. ( I78f0d , b/327682438 )
نسخه 3.3.0-alpha04
6 مارس 2024
androidx.paging:paging-*:3.3.0-alpha04
منتشر شد. نسخه 3.3.0-alpha04 حاوی این تعهدات است.
رفع اشکال
- رفع خطاهای جزئی اسناد مربوط به اضافه شدن سازگاری چند پلتفرمی Kotlin. ( aosp/2950785 )
نسخه 3.3.0-alpha03
7 فوریه 2024
androidx.paging:paging-*:3.3.0-alpha03
منتشر شد. نسخه 3.3.0-alpha03 حاوی این commit ها است.
ویژگی های جدید
-
PagingDataPresenter
اکنون یک کلاس عمومی است. ارائهکنندگان چند پلتفرمی اکنون میتوانند در بالایPagingDataPresenter
ساخته شوند، نه نیاز به APIهای Paging داخلی یاAsyncPagingDataDiffer
paging-runtime
. ( ID1f74 , b/315214786 ) - روشهای کمکی
LoadStates
وCombinedLoadStates
برای بررسی اینکه آیاLoadStates
در حالت Error یاNotLoading
قرار دارد اضافه شد. همچنین یک API جدید اضافه کرد که درLoadStateFlow
منتظر می ماند تا زمانی که یک بار در حالتNotLoading
یا Error قرار گیرد. ( ID6c67 )
تغییر رفتار
- اکنون
PagingData.empty()
حالت هایNotLoading
به صورت پیش فرض ارسال می کند مگر اینکهLoadStates
سفارشی به سازنده آن ارسال شود. این از رفتار موجود که در آنLoadStates
هنگام ارسال بهPagingDataAdapter
ارسال نمیکند یا وقتی که بهعنوانLazyPagingItems
جمعآوری میشود، وضعیتهای بارگیری را ارسال میکند، فاصله میگیرد. هنگامی که به عنوانLazyPagingItems
جمع آوری می شود، اکنون بلافاصله پس از ترکیب اولیه یک لیست خالی نمایش داده می شود. ( I4d11d , b/301833847 )
نسخه 3.3.0-alpha02
20 سپتامبر 2023
androidx.paging:paging-*:3.3.0-alpha02
منتشر شد. نسخه 3.3.0-alpha02 حاوی این commit ها است.
سازگاری چند پلتفرمی Kotlin
Paging اکنون مصنوعات سازگار با Kotlin Multiplatform را میفرستد، تا حد زیادی به لطف کارهای بالادستی پروژه صفحهبندی چند پلتفرمی CashApp. این به ما امکان می دهد از واگرایی بین دو مخزن جلوگیری کنیم و آنها را سازگار نگه داریم.
-
paging-common
همه API های Paging 3 را بهcommon
منتقل کرده است و اکنون علاوه بر اندروید با jvm و iOS سازگار است. -
paging-testing
کدهای خود را بهcommon
منتقل کرده است و اکنون علاوه بر اندروید با jvm و iOS نیز سازگار است. -
paging-compose
کد خود را بهcommon
منتقل کرده است و یک مصنوع اندرویدی را ارسال می کند که با پشتیبانی چند پلتفرمیandroidx.compose
مطابقت دارد. -
paging-runtime
،paging-guava
،paging-rxjava2
، وpaging-rxjava3
فقط اندروید باقی خواهند ماند.
تغییرات API
- رابط عمومی Logger که فقط برای استفاده داخلی در نظر گرفته شده بود منسوخ شده است ( I16e95 , b/288623117 )
مشارکت خارجی
- با تشکر از veyndan از Cash App برای کمک به انتقال پیجینگ به چند پلتفرم Kotlin ( #560 , #561 , #562 , #573 , #576 , #577 , #578 , #579 , #580 , #581 , #583 , #584 , # 586 ، #609 )
نسخه 3.3.0-alpha01
20 سپتامبر 2023
- این اولین نسخه چند پلتفرمی کتابخانههای androidx.page است. این نسخه فقط دارای آرتیفکت های
*-jvm
و*-android
است. برای انواع macOS، iOS و linux، از3.3.0-alpha02
استفاده کنید.
نسخه 3.2
نسخه 3.2.1
6 سپتامبر 2023
androidx.paging:paging-*:3.2.1
منتشر شد. نسخه 3.2.1 حاوی این commit ها است.
رفع اشکال
- مشکلی را برطرف کرد که در آن API
asSnapshot()
مصنوع Paging Testing هنگام عبور از یک Flow ساخته شده با استفاده ازPagingData.from(List)
آویزان می شد، زیراasSnapshot()
هیچ اطلاعاتی در مورد پایان بارگیری نداشت (برخلافPagingData.from(List, LoadStates)
اضافه بار). این راهحل فقط برای جریانهای کامل کار میکند (به عنوان مثال، یکflowOf(PagingData.from(...))
). برای جریان های غیر کامل (به عنوان مثال،MutableStateFlow
، ازPagingData.from
اضافه بار استفاده کنید کهLoadStates
ارائه می دهد). ( I502c3 ) - Paging Compose اکنون به صورت داخلی از
AndroidUiDispatcher.Main
استفاده میکند تا اطمینان حاصل شود که دادههای جدید در همان قاب با اتمام بارگیری در دسترس هستند. ( Ia55af )
نسخه 3.2.0
26 جولای 2023
androidx.paging:paging-*:3.2.0
منتشر شد. نسخه 3.2.0 حاوی این commit ها است.
تغییرات مهم از 3.1.0
- Paging Compose به پایداری API رسیده است و دوباره در بقیه Paging ادغام شده است، جایی که نسخه آن اکنون با تمام آثار هنری Paging دیگر مطابقت دارد. تغییرات از 3.1.0 عبارتند از:
- پشتیبانی از پیش نمایش لیست داده های جعلی با ایجاد یک
PagingData.from(fakeData)
و قرار دادن آنPagingData
در یکMutableStateFlow
(مثلاMutableStateFlow(PagingData.from(listOf(1, 2, 3)))
). برای پیشنمایش، این جریان را به@Preview
composables بهعنوان گیرنده برایcollectAsLazyPagingItems()
ارسال کنید. - پشتیبانی از همه طرحبندیهای تنبل مانند
LazyVerticalGrid
وHorizontalPager
و همچنین مؤلفههای تنبل سفارشی از Wear و کتابخانههای تلویزیون. این امر از طریق روشهای افزودنی سطح پایینترLazyPagingItems
itemKey
وitemContentType
به دست آمد، که به شما کمک میکند پارامترهایkey
وcontentType
را در APIهایitems
استانداردی که از قبل برایLazyColumn
،LazyVerticalGrid
و همچنین معادلهای آنها در APIهایی مانندHorizontalPager
وجود دارد، پیادهسازی کنید. -
items(lazyPagingItems)
وitemsIndexed(lazyPagingItems)
که فقطLazyListScope
را پشتیبانی میکنند منسوخ شدند.
- پشتیبانی از پیش نمایش لیست داده های جعلی با ایجاد یک
- مصنوع جدید
paging-testing
که APIهایی را ارائه میکند که پیرامون واحد آزمایش هر لایه برنامه شما و ادغام آن با Paging به صورت مجزا طراحی شدهاند. مثلاً شامل می شود- کلاس
TestPager
که به شما امکان می دهد رفتار پیاده سازیPagingSource
سفارشی خود را مستقل از پیجر و رابط کاربری واقعی اعتبارسنجی کنید. - API های
asPagingSourceFactory
برای تبدیلFlow<List<Value>>
یا StaticList<Value>
بهPagingSourceFactory
که می تواند در آزمایش ها به پیجر ارسال شود. - پسوند
asSnapshot
Kotlin درFlow<PagingData<Value>>
، کهFlow<PagingData<Value>>
به یکList<Value>
مستقیم ترجمه میکند.asSnapshot lambda
به شما این امکان را میدهد که رابط کاربری برنامه خود را از طریق APIهایی مانندscrollTo
یاappendScrollWhile
تقلید کنید تا بتوانید صحت عکس فوری دادهها را در هر نقطه از مجموعه دادههای صفحهشده خود تأیید کنید.
- کلاس
- گزارشهای پیشفرض اضافه شده برای افشای اطلاعات اشکالزدایی صفحهبندی در دو سطح:
VERBOSE
وDEBUG
. گزارشها را میتوان از طریق دستورadb shell setprop log.tag.Paging [DEBUG|VERBOSE]
فعال کرد. این هم برای صفحهبندی با نمایش یا صفحهبندی با نوشتن صدق میکند. - سازنده هایی برای
PagingDataAdapter
وAsyncPagingDataDiffer
اضافه شد کهCoroutineContext
به جایCoroutineDispatcher
می پذیرند. - یک رابط کاربردی جدید
PagingSourceFactory
اضافه شد که سطح API واضحتری نسبت به () -> لامبداهایPagingSource
ارائه میدهد. از این کارخانه می توان برای نمونه سازی پیجر استفاده کرد.
نسخه 3.2.0-rc01
21 ژوئن 2023
androidx.paging:paging-*:3.2.0-rc01
منتشر شد. نسخه 3.2.0-rc01 حاوی این commit ها است.
مشارکت خارجی
- از Veyndan برای کمک به دور کردن Paging از ویژگیهای Android/JVM سپاسگزاریم. ( #553 ، #554 ، #555 ، #559 )
نسخه 3.2.0-beta01
7 ژوئن 2023
androidx.paging:paging-*:3.2.0-beta01
منتشر شد. نسخه 3.2.0-beta01 حاوی این تعهدات است.
صفحه بندی نوشتن
- Paging Compose رسما به ثبات API رسیده است. به این ترتیب، نسخه از
1.0.0-alpha20
به روز شده است تا اکنون با نسخه سایر مصنوعات Paging مطابقت داشته باشد.
تغییرات API
-
items(LazyPagingItems)
وitemsIndexed(LazyPagingItems)
API از Paging Compose حذف شدند. برای نمونهای از APIهای جایگزین، یادداشتهای انتشار Paging Compose1.0.0-alpha20
ببینید. ( I9626e )
نسخه 3.2.0-alpha06
24 مه 2023
androidx.paging:paging-*:3.2.0-alpha06
منتشر شد. نسخه 3.2.0-alpha06 حاوی این commit ها است.
ویژگی های جدید
- یک رابط کاربردی
PagingSourceFactory
جدید اضافه شد که سطح API واضح تری را نسبت به لامبداهای موجود() -> PagingSource
ارائه می دهد. از این کارخانه می توان برای نمونه سازیPager
استفاده کرد. ( I33165 , b/280655188 ) - API
paging-testing
جدید ازList<Value>.asPagingSourceFactory()
برای دریافتPagingSourceFactory
که فقط از یک لیست غیرقابل تغییر از دادهها بارگیری میشود، اضافه شد. برنامه افزودنی موجود درFlow<List<Value>>
همچنان باید برای آزمایش با چندین نسل از داده های ثابت استفاده شود. ( Id34d1 , b/280655188 )
تغییرات API
- همه APIهای عمومی در تست صفحه بندی اکنون با
@VisibleForTesting
حاشیه نویسی می شوند تا اطمینان حاصل شود که این API ها فقط در آزمایش ها استفاده می شوند. ( I7db6e ) -
asSnapshot
API دیگر نیازی به عبور درCoroutineScope
ندارد. اکنون به طور پیش فرض از زمینه به ارث رسیده از محدوده والد خود استفاده می کند. ( ID0a78 , b/282240990 ) - ترتیب مجدد پارامترهای سازنده
TestPager
برای مطابقت مستقیم با ترتیب پارامترهای سازنده واقعیPager
( I6185a ) - استفاده از آزمایش صفحهبندی از نوع لامبدا
() -> PagingSource<Key, Value>
برای تایپPagingSourceFactory<Key, Value>
تغییر کرد. ( I4a950 , b/280655188 )
تغییرات رفتار
- دیسپاچر اصلی دیگر برای اجرای تستهای صفحهبندی
asSnapshot
لازم نیست. تنظیم آن دیگر هیچ تغییری در رفتار تست ایجاد نمی کند. ( Ie56ea )
نسخه 3.2.0-alpha05
3 مه 2023
androidx.paging:paging-*:3.2.0-alpha05
منتشر شد. نسخه 3.2.0-alpha05 حاوی این commit ها است.
تغییرات API
- API تست صفحهبندی
asSnapshot
اکنون پارامترloadOperations
خود را روی یک لامبدا خالی پیشفرض میکند. این امکان فراخوانیasSnapshot
بدون عبور از هیچ گونه عملیات بارگذاری برای بازیابی داده ها از بار تازه سازی اولیه فراهم می کند. ( Ied354 , b/277233770 )
بهبود اسناد
- اسناد را در
asPagingSourceFactory()
بهروزرسانی کرد تا روشن شود که این یک روش توسعهدهنده در یکFlow
است که یک کارخانه قابل استفاده مجدد را برای تولید نمونههایPagingSource
برمیگرداند. ( I5ff4f , I705b5 ) - اسناد را در سازنده
LoadResult.Page
بهروزرسانی کرد تا نیاز به لغوitemsBefore
وitemsAfter
برای پشتیبانی از پرش را روشن کند. ( Ied354 )
مشارکت های خارجی
- از Veyndan برای کمک به دور کردن Paging از ویژگیهای Android/JVM سپاسگزاریم. ( #525 ، #523 ، #520 ، #519 ، #507 ، # 506 ، # 505 ، #499، #497 ، #496 ، #493 )
نسخه 3.2.0-alpha04
8 فوریه 2023
androidx.paging:paging-*:3.2.0-alpha04
منتشر شد. نسخه 3.2.0-alpha04 حاوی این commit ها است.
تست صفحه بندی
- آرتیفکت
paging-testing
اکنون حاوی یک متدasPagingSourceFactory
برای ایجاد یکpagingSourceFactory
از یکFlow<List<Value>>
است که به یک پیجر ارائه میشود. هرList<Value>>
منتشر شده از Flow تولیدی از داده های Paged را نشان می دهد. این امر آزمایشهای صفحهبندی را برای مثال، تبدیلهایPagingData
با جعل منبع داده برای جمعآوری پیجر تسهیل میکند. ( I6f230 , b/235528239 ) مصنوع
paging-testing
با APIهای جدید مناسب برای تأیید صحت دادههای موجود باFlow<PagingData<T>>
گسترش یافته است. به عنوان مثال، می توان از آن برای اثبات خروجی یکFlow<PagingData<T>>
از لایه ViewModel استفاده کرد.این کار از طریق پسوند
asSnapshot
Kotlin درFlow<PagingData<Value>>
انجام می شود کهFlow<PagingData<Value>>
به یکList<Value>
مستقیم ترجمه می کند.asSnapshot
lambda به شما این امکان را می دهد تا از طریق API هایی مانندscrollTo
یاappendScrollWhile
از رابط کاربری برنامه خود تقلید کنید، در حالی که به روشی قابل تکرار و سازگار است تا بتوانید صحت عکس فوری داده ها را در هر نقطه از مجموعه داده های صفحه شده خود تأیید کنید.// Create your ViewModel instance val viewModel = … // Get the Flow of PagingData from the ViewModel val data< Flow<PagingData<String>> = viewModel.data val snapshot: List<String> = data.asSnapshot { // Each operation inside the lambda waits for the data to settle before continuing scrollTo(index = 50) // While you can’t view the items within the asSnapshot call, // you can continuously scroll in a direction while some condition is true // i.e., in this case until you hit a placeholder item appendScrollWhile { item: String -> item != “Header 1” } } // With the asSnapshot complete, you can now verify that the snapshot // has the expected values
asSnapshot
یک روشsuspend
است که انتظار می رود درrunTest
اجرا شود. برای اطلاعات بیشتر به تست کوروتین های Kotlin در Android مراجعه کنید. ( I55fd2 , I5bd26 , I7ce34 , I51f4d , I2249f , Id6223 , Ic4bab , Ib29b9 , Ic1238 , I96def , b/235528239 )
تغییرات API
- تماسهای رابط کاربری برای
getItem
وpeek
بهAsyncPagingDataDiffer
وPagingDataAdapter
اکنون بهدرستی بهعنوان تنها قابل فراخوانی در رشته اصلی علامتگذاری شدهاند. ( I699b6 ) - نویسههای عام را از انواع عمومی که توسط
TestPager
استفاده میشود حذف کرد، و استفاده از نتایج آن روشها را در کدهای نوشته شده در زبان برنامهنویسی جاوا آسانتر کرد. ( I56c42 )
نسخه 3.2.0-alpha03
24 اکتبر 2022
androidx.paging:paging-*:3.2.0-alpha03
منتشر شد. نسخه 3.2.0-alpha03 حاوی این commit ها است.
تست صفحه بندی
این نسخه حاوی یک مصنوع جدید است: paging-testing
. این مصنوع APIهایی را ارائه می دهد که حول واحد تست هر لایه از برنامه شما و ادغام آن با Paging به صورت مجزا طراحی شده اند.
برای مثال، این نسخه اول شامل یک کلاس TestPager
است که به شما اجازه میدهد تا رفتار پیادهسازی PagingSource
سفارشی خود را مستقل از Pager
و رابط کاربری واقعی که معمولاً برای شبیهسازی ادغام صفحهبندی انتها به انتها نیاز دارید، تأیید کنید.
TestPager
باید جعلی در نظر گرفت - یک آزمایش دوگانه که اجرای واقعی Pager
را منعکس می کند و در عین حال سطح API ساده شده ای را برای آزمایش یک PagingSource
ارائه می دهد. این APIها APIهای suspend
هستند و باید در runTest
اجرا شوند، همانطور که در راهنمای تست کوروتین های Kotlin در Android ذکر شده است.
نمونهای از این APIهای در حال استفاده را میتوان در تستهای room-paging
یافت، که برای استفاده از TestPager
بازسازی شدند.
تغییرات API
- تکرار راحت را روی
LoadResult.Page.data
از طریقLoadResult.Page.iterator()
فعال می کند. این به طور غیرمستقیم امکان استفاده از روشflatten
کتابخانه استاندارد Kotlin را زمانی کهList<LoadResult.Page>
داده می شود، مانند ویژگیpages
PagingState
که به متدPagingSource.getRefreshKey
داده می شود، اجازه می دهد. ( Ie0718 )
نسخه 3.2.0-alpha02
10 آگوست 2022
androidx.paging:paging-*:3.2.0-alpha02
منتشر شد. نسخه 3.2.0-alpha02 حاوی این commit ها است.
ویژگی های جدید
- Paging اکنون گزارشهایی را از طریق کلاسهای
AsyncPagingDataDiffer
یاPagingDataAdapter
برای افشای اطلاعات اشکالزدایی جمعآوریشده ازPagingData
فراهم میکند. - گزارشها را میتوان از طریق دستور
adb shell
adb shell setprop log.tag.Paging [DEBUG|VERBOSE].
( b/235527159 )
رفع اشکال
- خطای سازنده
PagingDataDiffer
از دست رفته هنگام استفاده ازpaging-common:3.2.0-alpha01
با زمان اجراpaging-runtime:3.1.1
یا قدیمی تر برطرف شد. ( b/235256201 )
نسخه 3.2.0-alpha01
1 ژوئن 2022
androidx.paging:paging-*:3.2.0-alpha01
منتشر شد. نسخه 3.2.0-alpha01 حاوی این commit ها است.
تغییرات API
- سازنده هایی برای
PagingDataAdapter
وAsyncPagingDataDiffer
اضافه شد کهCoroutineContext
به جایCoroutineDispatcher
می پذیرند. ( IDc878 ) - به طور پیشفرض،
PagingData.from()
وPagingData.empty()
دیگر رویCombinedLoadStates
در سمت ارائهدهنده اثر نمیگذارند. یک اضافه بار جدید که اجازه می دهدsourceLoadStates
وremoteLoadStates
را به این سازنده ها منتقل کند، برای حفظ رفتار موجود در تنظیمLoadStates
به طور کامل ترمینال (به عنوان مثال،NotLoading(endOfPaginationReached = false)
) اضافه شده است، با گزینه ای که در صورت نیاز، حالت های راه دور را نیز شامل می شود. . اگرLoadStates
ارسال نشود،CombinedLoadStates
قبلی زمانی کهPagingData
ایستا را دریافت می کند، در سمت ارائه کننده حفظ می شود. ( Ic3ce5 , b/205344028 )
رفع اشکال
- نتیجه
PagingSource.getRefreshKey()
اکنون در مواردی که null برمیگرداند به درستی نسبت بهinitialKey
اولویتبندی میشود، اما یکinitialKey
غیر تهی تنظیم شده است. ( Ic9542 , b/230391606 )
مشارکت خارجی
- به روز شد :compose:ui:ui-test api (updateApi) به دلیل مهاجرت test-coroutines-lib ( I3366d )
نسخه 3.1
نسخه 3.1.1
9 مارس 2022
androidx.paging:paging-*:3.1.1
منتشر شد. نسخه 3.1.1 حاوی این commit ها است.
رفع اشکال
- رویدادهای میانی
LoadState.NotLoading
بین نسل هایی که به اشتباه توسط.cachedIn()
درج شده بودند حذف شد. این تغییر واکنش به تغییراتLoadState
را با حذف رویدادهای اضافیLoadState.NotLoading
که بین تلاش مجدد بارهای ناموفق، هنگام بازخوانی یا در حین باطل شدن ایجاد شده اند، بسیار آسان تر می کند.
نسخه 3.1.0
17 نوامبر 2021
androidx.paging:paging-*:3.1.0
منتشر شد. نسخه 3.1.0 شامل این commit ها است.
تغییرات مهم از 3.0.0
-
Flow<PagingData>.observable
وFlow<PagingData>.flowable
API دیگر آزمایشی نیستند - تغییرات رفتار در
LoadState
:-
endOfPaginationReached
اکنون برایLoadType.REFRESH
برایPagingSource
وRemoteMediator
همیشهfalse
است. -
LoadStates
از Paging اکنون منتظر مقادیر معتبر ازPagingSource
وRemoteMediator
قبل از انتشار پایین دست هستند. نسلهای جدیدPagingData
بهجای بازنشانی نادرست بهNotLoading
در برخی موارد، اکنون همیشه بهدرستی باLoading
برای وضعیت تازهسازی شروع میشوند. -
.loadStateFlow
و.addLoadStateListener
در APIهای ارائه دهنده دیگر به طور اضافی یکCombinedLoadStates
اولیه را ارسال نمی کنند که همیشه حالت های میانجی رویnull
تنظیم شده است.
-
- لغو در نسل های گذشته اکنون مشتاقانه در باطل شدن / نسل های جدید اتفاق می افتد. دیگر نیازی به استفاده از
.collectLatest
درFlow<PagingData>
نیست، اگرچه همچنان توصیه می شود این کار را انجام دهید. -
PagingSource.LoadResult.Invalid
به عنوان یک نوع بازگشتی جدید ازPagingSource.load
اضافه شده است، که باعث می شود Paging هرگونه درخواست بارگیری معلق یا آتی را به اینPagingSource
رد کند و آن را باطل کند. این نوع بازگشتی برای رسیدگی به داده های بالقوه نامعتبر یا قدیمی که می توانند از پایگاه داده یا شبکه برگردانده شوند طراحی شده است. - APIهای ارائه دهنده
.onPagesPresented
و.addOnPagesUpdatedListener
اضافه شدند که همزمان با ارائه صفحات در رابط کاربری فعال می شوند. به روز رسانی صفحه ممکن است در سناریوهای زیر اتفاق بیفتد:- بار اولیه نسل جدیدی از PagingData کامل می شود، صرف نظر از اینکه نسل جدید تغییراتی در موارد ارائه شده داشته باشد. به عنوان مثال، نسل جدیدی که بار اولیه را بدون بهروزرسانی کامل میکند، زیرا فهرست دقیقاً یکسان است، همچنان این تماس را آغاز میکند.
- یک صفحه درج می شود، حتی اگر صفحه درج شده حاوی موارد جدیدی نباشد.
- یک صفحه حذف می شود، حتی اگر صفحه حذف شده خالی بود.
نسخه 3.1.0-rc01
3 نوامبر 2021
androidx.paging:paging-*:3.1.0-rc01
منتشر شد. نسخه 3.1.0-rc01 حاوی این commit ها است.
رفع اشکال
- وضعیت مسابقه + نشت حافظه در cachedIn.() در مواردی که چندین رویداد بارگیری توسط Paging در پایین دست ارسال شده بود در حالی که هیچ ناظری وجود ندارد یا بین زمانی که یک ناظر در حال تغییر به PagingData جدید است، رفع شد. ( IB682e )
نسخه 3.1.0-beta01
13 اکتبر 2021
androidx.paging:paging-*:3.1.0-beta01
منتشر شد. نسخه 3.1.0-beta01 حاوی این تعهدات است.
رفع اشکال
- مشکلی را برطرف کرد که در آن بسیاری از دسترسیهای سریع به آیتمها میتوانست باعث شود آنها برای بررسی در prefetchDistance حذف شوند و بارگذاری صفحه متوقف شود. این مسئله به ویژه زمانی که بسیاری از موارد به طور همزمان به ترتیبی که بارگذاری را بر خلاف جهت پیمایش کاربر در اولویت قرار می دهد، قرار می گیرند. این دسترسیهای آیتمها اکنون بافر شده و بهطور همزمان اولویتبندی میشوند تا از حذف آنها جلوگیری شود. ( aosp/1833273 )
نسخه 3.1.0-alpha04
29 سپتامبر 2021
androidx.paging:paging-*:3.1.0-alpha04
منتشر شد. نسخه 3.1.0-alpha04 حاوی این commit ها است.
تغییرات API
- APIهای
Flow<PagingData>.observable
وFlow<PagingData>.flowable
دیگر آزمایشی نیستند. ( Ie0bdd )
رفع اشکال
- برای LoadStates،
endOfPaginationReached
اکنون برایLoadType.REFRESH
همیشهfalse
است. قبلاً ممکن بود endOfPaginationReached برای RemoteMediatorREFRESH
true
باشد، اما برای PagingSource اینطور نبود. این رفتار اکنون ادغام شده است تا همیشهfalse
برگردد، زیرا هرگز ترمینال بودن REFRESH منطقی نیست و اکنون به عنوان بخشی از قرارداد API در LoadStates مستند شده است. هنگام تصمیم گیری در مورد پایان صفحه بندی، باید همیشه این کار را با توجه به دستورالعمل های APPEND یا PREPEND انجام دهید. ( I047b6 ) LoadStates از Paging اکنون منتظر مقادیر معتبر از PagingSource و RemoteMediator قبل از انتشار بین نسلها هستند. این از نسلهای جدید PagingData از ارسال NotLoading در CombinedLoadStates.source.refresh جلوگیری میکند، اگر قبلاً در حال بارگیری بود. نسلهای جدید PagingData بهجای بازنشانی نادرست به NotLoading در برخی موارد، اکنون همیشه به درستی با Loading برای وضعیت تازهسازی شروع میشوند.
لغو در نسل های گذشته اکنون مشتاقانه بر باطل شدن / نسل های جدید اتفاق می افتد. دیگر نیازی به استفاده از .collectLatest در
Flow<PagingData>
نیست، اگرچه هنوز به شدت توصیه می شود این کار را انجام دهید. ( I0b2b5 , b/177351336 , b/195028524 ).loadStateFlow
و.addLoadStateListener
در APIهای ارائهدهنده دیگر به طور اضافی یکCombinedLoadStates
اولیه را ارسال نمیکنند که همیشه حالتهای واسطه رویnull
و حالتهای مبدا رویNotLoading(endOfPaginationReached = false)
تنظیم شده است. این بدان معنی است که:- اگر از RemoteMediator استفاده کنید، حالت های میانجی همیشه پر می شوند.
- اگر یک
CombinedLoadStates
واقعی ازPagingData
دریافت نکرده باشد، ثبت یک شنونده جدید loadState یا یک جمعآورنده جدید در.loadStateFlow
دیگر بلافاصله مقدار فعلی را منتشر نمیکند. این می تواند اتفاق بیفتد اگر یک گردآورنده یا شنونده قبل از ارسالPagingData
شروع به کار کند. ( I1a748 )
نسخه 3.1.0-alpha03
21 جولای 2021
androidx.paging:paging-*:3.1.0-alpha03
منتشر شد. نسخه 3.1.0-alpha03 حاوی این commit ها است.
تغییرات API
سومین نوع بازگشت LoadResult LoadResult.Invalid به PagingSource اضافه می شود. وقتی یک PagingSource.load LoadResult.Invalid را برمی گرداند، صفحه بندی داده های بارگیری شده را دور می زند و PagingSource را بی اعتبار می کند. این نوع بازگشتی برای رسیدگی به داده های بالقوه نامعتبر یا قدیمی که می توانند از پایگاه داده یا شبکه برگردانده شوند طراحی شده است.
برای مثال، اگر پایگاه داده زیربنایی در آن نوشته شود اما PagingSource به موقع باطل نشود، اگر اجرای آن به تغییرناپذیری مجموعه داده پشتیبانی که از آن بارگیری میکند (مثلاً پیادهسازیهای DB سبک LIMIT OFFSET) بستگی داشته باشد، ممکن است نتایج متناقضی را نشان دهد. در این سناریو، توصیه میشود پس از بارگذاری، عدم اعتبار را بررسی کنید و LoadResult.Invalid را برگردانید، که باعث میشود Paging هرگونه درخواست بارگیری در انتظار یا آینده را به این PagingSource رد کند و آن را باطل کند.
این نوع بازگشت نیز توسط Paging2 API پشتیبانی میشود که از LivePagedList یا RxPagedList استفاده میکند. هنگام استفاده از PagingSource با APIهای PagedList Paging2، PagedList بلافاصله جدا میشود و تلاشهای بیشتر برای بارگیری دادهها در این PagedList متوقف میشود و باعث بیاعتباری در PagingSource میشود.
LoadResult یک کلاس مهر و موم شده است، به این معنی که این یک تغییر با منبع ناسازگار است به طوری که استفاده از موارد مستقیماً با استفاده از نتایج PagingSource.load باید در زمان کامپایل LoadResult.Invalid را مدیریت کند. به عنوان مثال، کاربران Kotlin که از نوع بازگشتی جامع-چه زمانی بررسی می کنند، باید یک چک برای نوع نامعتبر اضافه کنند. ( Id6bd3 , b/191806126 , b/192013267 )
رفع اشکال
- تماسهای باطل اضافهشده از طریق PagingSource.registerInvalidatedCallback یا DataSource.addInvalidatedCallback اکنون اگر در PagingSource/DataSource که قبلاً نامعتبر بوده ثبت شده باشند، بهطور خودکار فعال میشوند. این یک وضعیت مسابقه ای را حل می کند که باعث می شد صفحه بندی سیگنال های عدم اعتبار را رها کند و در صورت ارائه منبعی که قبلاً در بارگذاری اولیه نامعتبر بود، گیر کند. علاوه بر این، تماسهای بیاعتبار پس از راهاندازی به درستی حذف میشوند، زیرا تضمین میشود که حداکثر یکبار فراخوانی شوند. ( I27e69 )
- ارسال مقدار اولیه مکاننما (InitialPagedList) از یک جریان PagedList جدید، به عنوان مثال، LivePagedListBuilder یا RxPagedListBuilder دیگر دادههای بارگیریشده قبلی را پاک نمیکند.
نسخه 3.1.0-alpha02
1 ژوئیه 2021
androidx.paging:paging-*:3.1.0-alpha02
منتشر شد. نسخه 3.1.0-alpha02 حاوی این commit ها است.
ویژگی های جدید
اضافه شده درPagesPresented شنونده و ارائه دهنده جریان API که بلافاصله پس از صفحات ارائه شده فعال می شوند، در UI به روز می شوند.
از آنجایی که این بهروزرسانیها با رابط کاربری همگام هستند، میتوانید از روشهای آداپتور مانند .snapshot، .getItemCount برای بررسی وضعیت پس از اعمال بهروزرسانی فراخوانی کنید. توجه داشته باشید که .snapshot() به طور صریح فراخوانی شود زیرا ممکن است انجام آن در هر به روز رسانی گران باشد.
به روز رسانی صفحه ممکن است در سناریوهای زیر اتفاق بیفتد:
- بار اولیه نسل جدیدی از PagingData کامل می شود، صرف نظر از اینکه نسل جدید تغییراتی در موارد ارائه شده داشته باشد. به عنوان مثال، نسل جدیدی که بار اولیه را بدون بهروزرسانی کامل میکند، زیرا فهرست دقیقاً یکسان است، همچنان این تماس را آغاز میکند.
- یک صفحه درج می شود، حتی اگر صفحه درج شده حاوی موارد جدیدی نباشد
- یک صفحه حذف می شود، حتی اگر صفحه حذف شده خالی بود ( I272c9 ، b/189999634 )
رفع اشکال
- دسترسی به PagedList.dataSource از مقدار اولیه تولید شده توسط LivePagedList یا RxPagedList دیگر به اشتباه یک IllegalStateException ایجاد نمی کند ( I96707 )
نسخه 3.1.0-alpha01
2 ژوئن 2021
androidx.paging:paging-*:3.1.0-alpha01
منتشر شد. نسخه 3.1.0-alpha01 حاوی این commit ها است.
تغییرات API
- کلاس های ارائه شده توسط
paging-rxjava3
اکنون تحت بستهandroidx.paging.rxjava3
قرار می گیرند تا باpaging-rxjava2
( Ifa7f6 ) در تضاد نباشند.
رفع اشکال
- مشکلی را برطرف کرد که در آن Paging گاهی اوقات رویدادهای متفاوت بدون عملیات را به RecyclerView ارسال میکرد، که میتوانست باعث شود برخی شنوندگان زودهنگام فعال شوند. ( IC507f , b/182510751 )
مشارکت خارجی
- APIهای سازگار با PagedList منسوخ شده به آرتیفکت rxjava3 اضافه شد ( Id1ce2 , b/182497591 )
Paging Compose نسخه 1.0.0
نسخه 1.0.0-alpha20
24 مه 2023
androidx.paging:paging-compose:1.0.0-alpha20
منتشر شد. نسخه 1.0.0-alpha20 حاوی این commit ها است.
ویژگی های جدید
- Paging Compose اکنون از پیش نمایش فهرستی از داده های جعلی با ایجاد یک
PagingData.from(fakeData)
و قرار دادن آنPagingData
در یکMutableStateFlow
(به عنوان مثال،MutableStateFlow(PagingData.from(listOf(1, 2, 3)))
) پشتیبانی می کند. با استفاده از آن دادهها بهعنوان ورودی در@Preview
، تماسهای مربوط بهcollectAsLazyPagingItems()
LazyPagingItems
قابل پیشنمایش را ارائه میکنند. ( I8a78d , b/194544557 )
رفع اشکال
- دادههای ذخیرهشده از
pager.flow.cachedIn
که درLazyPagingItems
جمعآوری شدهاند، اکنون بلافاصله پس از بازیابی حالت بدون نیاز به جمعآوری ناهمزمان در دسترس خواهند بود. این بدان معنی است که داده های کش بلافاصله پس از ترکیب اولیه پس از بازیابی حالت برای ارائه آماده می شوند. ( I97a60 , b/177245496 )
نسخه 1.0.0-alpha19
3 مه 2023
androidx.paging:paging-compose:1.0.0-alpha19
منتشر شد. نسخه 1.0.0-alpha19 حاوی این commit ها است.
پشتیبانی از همه طرح بندی های تنبل
پیش از این، Paging Compose items
سفارشی و افزونههای itemsIndexed
در LazyListScope
ارائه میکرد، که به این معنی بود که نمیتوانید از Paging Compose با دیگر طرحبندیهای تنبل مانند LazyVerticalGrid
، HorizontalPager
یا سایر مؤلفههای تنبل سفارشی ارائهشده توسط Wear و کتابخانه تلویزیون استفاده کنید. پرداختن به این انعطاف ناپذیری، به روز رسانی اولیه برای این نسخه است.
برای پشتیبانی از طرحبندیهای تنبل بیشتر، باید APIها را در لایههای متفاوتی ایجاد میکردیم - به جای ارائه یک API items
سفارشی برای هر طرحبندی تنبل، Paging Compose اکنون روشهای توسعه سطح کمی پایینتر را در LazyPagingItems
در itemKey
و itemContentType
ارائه میکند. تمرکز این APIها بر کمک به شما برای پیاده سازی پارامترهای key
و contentType
در items
استاندارد API هایی است که از قبل برای LazyColumn
، LazyVerticalGrid
و همچنین معادل های آنها در API هایی مانند HorizontalPager
وجود دارد. ( Ifa13b , Ib04f0 , b/259385813 )
این بدان معنی است که پشتیبانی از LazyVerticalGrid
به این صورت است:
// This part is unchanged
val lazyPagingItems = pager.collectAsLazyPagingItems()
LazyVerticalGrid(columns = GridCells.Fixed(2)) {
// Here we use the standard items API
items(
count = lazyPagingItems.itemCount,
// Here we use the new itemKey extension on LazyPagingItems to
// handle placeholders automatically, ensuring you only need to provide
// keys for real items
key = lazyPagingItems.itemKey { it.uniqueId },
// Similarly, itemContentType lets you set a custom content type for each item
contentType = lazyPagingItems.itemContentType { "contentType" }
) { index ->
// As the standard items call provides only the index, we get the item
// directly from our lazyPagingItems
val item = lazyPagingItems[index]
PagingItem(item = item)
}
}
برای مثالهای بیشتر از استفاده از این APIهای جدید، لطفاً به نمونههای ما مراجعه کنید.
در حالی که این تغییرات باعث میشود نمونههای LazyColumn
و LazyRow
چند خط طولانیتر شوند، ما احساس کردیم که ثبات در همه طرحبندیهای تنبل عامل مهمی برای کسانی است که از Paging Compose در آینده استفاده میکنند. به همین دلیل، افزونههای موجود برای LazyListScope
اکنون منسوخ شدهاند. ( I0c459 , I92c8f , b/276989796 )
تغییرات API
- برای سهولت انتقال به APIهای جدید، توابع افزودنی
items
وitemsIndexed
درLazyListScope
اکنون از یک پارامترcontentType
پشتیبانی میکنند که پشتیبانی در APIهای جدید را منعکس میکند. ( Ib1918 , b/255283378 )
به روز رسانی های وابستگی
- Paging Compose وابستگی خود را از Compose 1.0.5 به Compose 1.2.1 به روز کرده است. ( Ib1918 , b/255283378 )
نسخه 1.0.0-alpha18
8 فوریه 2023
androidx.paging:paging-compose:1.0.0-alpha18
بدون هیچ تغییری منتشر شد. نسخه 1.0.0-alpha18 حاوی این commit ها است.
نسخه 1.0.0-alpha17
24 اکتبر 2022
androidx.paging:paging-compose:1.0.0-alpha17
منتشر شد. نسخه 1.0.0-alpha17 حاوی این commit ها است.
ویژگی های جدید
- هنگام فراخوانی
collectLazyPagingItems
، پشتیبانی از یکCoroutineContext
سفارشی را اضافه کنید. ( I7a574 , b/243182795 , b/233783862 )
نسخه 1.0.0-alpha16
10 آگوست 2022
androidx.paging:paging-compose:1.0.0-alpha16
منتشر شد. نسخه 1.0.0-alpha16 حاوی این commit ها است.
ویژگی های جدید
- Paging اکنون گزارش هایی را از طریق کلاس
LazyPagingItems
برای افشای اطلاعات اشکال زدایی جمع آوری شده از PagingData فراهم می کند. - گزارشها را میتوان از طریق دستور
adb shell
adb shell setprop log.tag.Paging [DEBUG|VERBOSE]
فعال کرد. ([b/235527159}(https://issuetracker.google.com/issues/235527159))
رفع اشکال
- خطای سازنده
PagingDataDiffer
از دست رفته هنگام استفاده ازpaging-compose:1.0.0-alpha15
باpaging-common:3.1.1
یا قدیمی تر برطرف شد. ( b/235256201 ، b/239868768 )
نسخه 1.0.0-alpha15
1 ژوئن 2022
androidx.paging:paging-compose:1.0.0-alpha15
منتشر شد. نسخه 1.0.0-alpha15 حاوی این commit ها است.
تغییرات API
- سازنده هایی برای
PagingDataAdapter
وAsyncPagingDataDiffer
اضافه شد کهCoroutineContext
به جایCoroutineDispatcher
می پذیرند. ( IDc878 )
رفع اشکال
-
LazyPagingItems
اکنونloadState
اولیه را طوری تنظیم می کند که یکLoadState.Loading
refresh داشته باشد. ( I55043 , b/224855902 )
نسخه 1.0.0-alpha14
13 اکتبر 2021
androidx.paging:paging-compose:1.0.0-alpha14
منتشر شد. نسخه 1.0.0-alpha14 حاوی این commit ها است.
نسخه 1.0.0-alpha13
29 سپتامبر 2021
androidx.paging:paging-compose:1.0.0-alpha13
منتشر شد. نسخه 1.0.0-alpha13 حاوی این commit ها است.
تغییرات API
- عملکرد
LazyPagingItems.snapshot()
باLazyPagingItems.itemSnapshotList
( IE2DA8 ) جایگزین شد -
LazyPagingItems.getAsState()
حذف شد ( IE65E4 )
نسخه 1.0.0-alpha12
21 جولای 2021
androidx.paging:paging-compose:1.0.0-alpha12
منتشر می شود. نسخه 1.0.0-alpha12 شامل این تعهدات است.
تغییرات API
-
items(lazyPagingItems)
وitemsIndexed(lazyPagingItems)
برای اتصال صفحه بندی باLazyColumn/Row
اکنون مورد استفاده قرار می گیرند و اکنون کلید اصلی گزینه را می پذیرند که به شما امکان می دهد یک کلید پایدار را نشان دهید. می توانید اطلاعات بیشتر در مورد کلیدها را در اینجا بخوانید. ( i7986d ) - عملکرد
lazyPagingItems.getAsState(index)
اکنون کاهش یافته است. به جای آن ازlazyPagingItems[index]
استفاده کنید. ( i086cb ، b/187339372 )
نسخه 1.0.0-alpha11
30 ژوئن 2021
androidx.paging:paging-compose:1.0.0-alpha11
منتشر می شود. نسخه 1.0.0-alpha11 شامل این تعهدات است.
نسخه 1.0.0-alpha10
2 ژوئن 2021
androidx.paging:paging-compose:1.0.0-alpha10
منتشر می شود. نسخه 1.0.0-alpha10 شامل این تعهدات است.
نسخه 1.0.0-alpha09
18 مه 2021
androidx.paging:paging-compose:1.0.0-alpha09
منتشر می شود. نسخه 1.0.0-alpha09 شامل این تعهدات است.
رفع اشکال
- مورد LazypagingItems و دریافت کننده مورد اکنون قابل مشاهده است که اجازه می دهد تا از LazyverticalGrid نیز استفاده شود ( IE2446 ، B/171872064 ، B/168285687 )
سازگاری را تشکیل می دهد
-
androidx.paging:paging-compose:1.0.0-alpha09
فقط با نسخه Compose1.0.0-beta07
و بالاتر سازگار است.
نسخه 1.0.0-alpha08
24 فوریه 2021
androidx.paging:paging-compose:1.0.0-alpha08
منتشر می شود. نسخه 1.0.0-alpha08 شامل این تعهدات است.
به روز شده برای ادغام با آهنگسازی 1.0.0-beta01.
نسخه 1.0.0-alpha07
10 فوریه 2021
androidx.paging:paging-compose:1.0.0-alpha07
منتشر می شود. نسخه 1.0.0-alpha07 حاوی این commit ها است.
به روز شده برای ادغام با آهنگسازی Alpha12.
نسخه 1.0.0-alpha06
28 ژانویه 2021
androidx.paging:paging-compose:1.0.0-alpha06
منتشر می شود. نسخه 1.0.0-alpha06 حاوی این commit ها است.
رفع اشکال
به روز شده به آهنگسازی 1.0.0-alpha11 بستگی دارد.
نسخه 1.0.0-alpha05
13 ژانویه 2021
androidx.paging:paging-compose:1.0.0-alpha05
منتشر می شود. نسخه 1.0.0-alpha05 حاوی این commit ها است.
به روز شده به آهنگسازی 1.0.0-alpha10 بستگی دارد.
نسخه 1.0.0-alpha04
16 دسامبر 2020
androidx.paging:paging-compose:1.0.0-alpha04
منتشر می شود. نسخه 1.0.0-alpha04 حاوی این commit ها است.
رفع اشکال
- به روزرسانی ویژگی های راحتی ،
CombinedLoadStates.refresh
،CombinedLoadStates.prepend
،CombinedLoadStates.append
برای انتقال فقط ازLoading
بهNotLoading
پس از اینکه هر دو حالت واسطه و منبع بارNotLoading
تا اطمینان حاصل شود که به روزرسانی از راه دور اعمال شده است. ( i65619 )
نسخه 1.0.0-alpha03
2 دسامبر 2020
androidx.paging:paging-compose:1.0.0-alpha03
منتشر می شود. نسخه 1.0.0-alpha03 حاوی این commit ها است.
- به روز شده برای مطابقت با آهنگسازی 1.0.0-alpha08.
نسخه 1.0.0-alpha02
11 نوامبر 2020
androidx.paging:paging-compose:1.0.0-alpha02
منتشر می شود. نسخه 1.0.0-alpha02 حاوی این commit ها است.
تغییرات API
- روشهای اضافه شده
.peek()
،.snapshot()
،.retry()
و.refresh()
بهLazyPagingItem
S که همان عملکرد موجود درAsyncPagingDataDiffer
/PagingDataAdapter
را در معرض دید قرار می دهد ( IDDFE8 ، B / 172041660 )
نسخه 1.0.0-alpha01
28 اکتبر 2020
androidx.paging:paging-compose:1.0.0-alpha01
منتشر می شود. نسخه 1.0.0-alpha01 حاوی این commit ها است.
ویژگی های جدید
مصنوعات paging-compose
بین کتابخانه صفحه بندی و آهنگسازی Jetpack را فراهم می کند. یک مثال استفاده ساده:
@Composable
@OptIn(ExperimentalLazyDsl::class)
fun ItemsDemo(flow: Flow<PagingData<String>>) {
val lazyPagingItems = flow.collectAsLazyPagingItems()
LazyColumn {
items(lazyPagingItems) {
Text("Item is $it")
}
}
}
نسخه 3.0.1
نسخه 3.0.1
21 جولای 2021
androidx.paging:paging-*:3.0.1
منتشر می شود. نسخه 3.0.1 شامل این تعهدات است.
رفع اشکال
- دسترسی به
PagedList.dataSource
از مقدار اولیه تولید شده توسطLivePagedList
یاRxPagedList
دیگر به اشتباه یکپارچه سازی غیرقانونی را پرتاب نمی کند ( I96707 )
نسخه 3.0.0
نسخه 3.0.0
5 مه 2021
androidx.paging:paging-*:3.0.0
منتشر می شود. نسخه 3.0.0 شامل این تعهدات است.
ویژگی های اصلی 3.0.0
اکثر API های موجود از صفحه بندی 2.xx به نفع API های جدید Paging 3 به منظور پیشرفت های زیر کاهش یافته است:
- پشتیبانی از درجه یک از کورتین های Kotlin و جریان
- پشتیبانی از لغو
- حالت بار داخلی و سیگنال های خطا
- دوباره عمل کنید + قابلیت تازه سازی
- هر سه زیر کلاس DataSource در یک کلاس Unified PagingSource ترکیب شده اند
- تحولات صفحه سفارشی از جمله داخلی برای افزودن جداکننده ها
- بارگیری هدر و پاورقی های ایالتی
نسخه 3.0.0-RC01
21 آوریل 2021
androidx.paging:paging-*:3.0.0-rc01
منتشر می شود. نسخه 3.0.0-RC01 شامل این تعهدات است.
رفع اشکال
- مسئله ای را برطرف کرد که در آن گاهی اوقات صفحه بندی رویدادهای مختلف را برای بازیافت ارسال می کند ، که می تواند باعث شود شنوندگان خاصی زودتر تحریک شوند. ( IC507F ، B/182510751 )
نسخه 3.0.0-beta03
24 مارس 2021
androidx.paging:paging-*:3.0.0-beta03
منتشر می شود. نسخه 3.0.0-beta03 شامل این تعهدات است.
رفع اشکال
- ما در هنگام بارگیری مجدد لیست برای جلوگیری از پرش های غیر منتظره در RecyClerview ، نحوه برخورد با متغیرها را بازسازی کرده ایم. برای جزئیات بیشتر به nullpaddeddiffing.md مراجعه کنید. ( IF1490 ، b/170027529 ، b/177338149 )
- سازندگان مختلف PagedList (مسیر سازگاری قدیمی) دیگر به طور نادرست به طور همزمان با
DataSource.Factory.create()
.build()
مورد موضوع اصلی تماس نمی گیرند. ( b/182798948 )
نسخه 3.0.0-beta02
10 مارس 2021
androidx.paging:paging-*:3.0.0-beta02
منتشر می شود. نسخه 3.0.0-beta02 شامل این تعهدات است.
تغییرات API
- پسوندهای RX3 اکنون به درستی
@ExperimentalCoroutinesApi
Opt-in الزامات را پخش می کنند. پیش از این آنها بر روی روش@get
مشخص شده بودند ، که به دلیل: https://youtrack.jetbrains.com/issue/kt-45227 ( i5733c ) توسط کامپایلر Kotlin نادیده گرفته می شود.
رفع اشکال
- اجرای محدودیت در استفاده عمومی از API های آزمایشی ( I6AA29 ، B/174531520 )
- رفع اشکال باعث می شود
PagingState
همیشه در هنگام فراخوانی از راه دور ،null
شود. - رفع اشکال در جایی که صفحات خالی توسط PagingSource برگردانده می شود می تواند از واکشی مجدد صفحه برای انجام
prefetchDistance
جلوگیری کند و باعث شود که صفحه بندی "گیر" شود.
نسخه 3.0.0-beta01
10 فوریه 2021
androidx.paging:paging-*:3.0.0-beta01
منتشر می شود. نسخه 3.0.0-beta01 شامل این تعهدات است.
تغییرات API
- بسته های RX2 و RX3 اکنون حاشیه نویسی آزمایشی را که به آن بستگی دارد ، در معرض دید قرار می دهند. اگر از بسته بندی های Rx Compat در Paging-rxjava2 یا Paging-RxJava3 استفاده می کنید ، اکنون نیاز به حاشیه نویسی استفاده از
@OptIn(ExperimentalCoroutinesApi::class)
( IB1F9D )
رفع اشکال
-
IndexOutOfBoundsException: Inconsistency detected
گاهی اوقات هنگام استفاده از API هایDataSource
V2 از طریق مسیرهای سازگاری پرتاب می شود - تماس
isInvalid
در هنگام اولیه سازیDataSource
هنگامی که از طریق مسیرهای سازگاری استفاده می شود ، اکنون به جای اینکه روی موضوع اصلی قرار بگیرد ، به درستی روی FetchDispatcher راه اندازی می شود. این امر به دلیل دسترسی DB به موضوع اصلی هنگام استفاده از اجرایPagingSource
اتاق ،IllegalStateException
برطرف می کند.
نسخه 3.0.0-alpha13
27 ژانویه 2021
androidx.paging:paging-*:3.0.0-alpha13
منتشر می شود. نسخه 3.0.0-alpha13 شامل این تعهدات است.
تغییرات API
-
PagingSource.getRefreshKey
دیگر برای اجرای آن اختیاری نیست ، اکنون یک عملکرد انتزاعی بدون اجرای پیش فرض است. کاربران مهاجر یا می توانند به بازگشت اجرای پیش فرض ادامه دهند ، که به سادگیnull
را برمی گرداند ، اماgetRefreshKey()
باید یک اجرای واقعی را بر اساس موقعیت کتیبه فعلی کاربر برگرداند که به صفحه بندی اجازه می دهد تا در صورتPagingState.anchorPosition
، بارگیری در اطراف Viewport را انجام دهد. ( i4339a ) -
InvalidatingPagingSourceFactory
اکنون یک کلاس نهایی است ( IA3B0A ) - اجازه پیکربندی رفتار جداکننده ترمینال (هدر / پاورقی) را با یک پارامتر جداکننده اختیاری اضافی اجازه دهید. دو گزینه عبارتند از:
-
FULLY_COMPLETE
- رفتار موجود ؛ قبل از اضافه کردن جداکننده های ترمینال ، هر دو PagingSource و remotemediator را علامت گذاری کنید. در صورت عدم استفاده از remotemediator ، LoadState از راه دور نادیده گرفته می شود. این امر در درجه اول مفید است اگر شما فقط می خواهید جداکننده های بخش را هنگام بارگیری کامل نشان دهید ، از جمله واکشی از منبع از راه دور به عنوان مثال ، شبکه. -
SOURCE_COMPLETE
- فقط منتظر PAGINGOURCE باشید تا حتی در صورت استفاده از remotemediator از EndofPaginationReached استفاده کنید. این اجازه می دهد تا هدرها و پاورقی ها به طور همزمان با بار اولیه ارائه شوند ، که مانع از نیاز کاربران برای پیمایش برای دیدن جداکننده های ترمینال می شود. ( IBE993 ، B/174700218 )
-
رفع اشکال
- یک نشت حافظه نادر را برطرف کرد که اتفاق می افتد هنگامی که یک PagingSource قبل از اینکه صفحه صفحه حتی می تواند شروع به بارگیری از آن کند ، بی اعتبار شود. ( i9606b ، b/174625633 )
نسخه 3.0.0-alpha12
13 ژانویه 2021
androidx.paging:paging-*:3.0.0-alpha12
منتشر می شود. نسخه 3.0.0-alpha12 شامل این تعهدات است.
تغییرات API
- InvalidatingPagingSourceFective دیگر یک کلاس انتزاعی نیست زیرا هرگز روش انتزاعی نداشت. ( i4a8c4 )
- اضافه بار اضافه شده از .cachedin () که به جای چرخه عمر یا Coroutinescope برای کاربران جاوا ، ViewModel را می پذیرد. ( i97d81 ، b/175332619 )
- به تماس گیرندگان جاوا اجازه دهید با پذیرش یک مجری به آرگومان های اپراتور تبدیل ، از عملیات تبدیل PagingData به روشی Async استفاده کنند. همه اپراتورهای Transform -sync پسوند -Sync را اکنون حذف کرده اند ، و کاربران Kotlin Coroutine با فراخوانی عملکرد پسوند که به جای آن یک بلوک تعلیق را می پذیرد ، باید تفکیک کنند. تمام اپراتورهای تحول PagingData به کلاسهای استاتیک PagingDatatransforms به پسوندها منتقل شده اند. کاربران جاوا باید از طریق یاران استاتیک به عنوان مثال ،
PagingDataTransforms.map(pagingData, transform)
برای کاربران Kotlin تماس بگیرند ، نحو یکسان است اما شما باید عملکرد را وارد کنید. ( IF6885 ، b/172895919 )
رفع اشکال
- رفع اشکالی که در آن
RemoteMediator.load()
در طولadapter.refresh()
اگر پایان صفحه بندی به پایان رسیده بود.
نسخه 3.0.0-alpha11
16 دسامبر 2020
androidx.paging:paging-*:3.0.0-alpha11
منتشر می شود. نسخه 3.0.0-alpha11 شامل این تعهدات است.
ویژگی های جدید
- پشتیبانی از دولت ذخیره شده برای موارد اصلی استفاده زیر اضافه شده است (پشتیبانی کامل ، به ویژه در مورد منبع لایه بندی هنوز یک کار در حال انجام است):
- جریان ذخیره شده و کاربرد کشته نمی شود (به عنوان مثال جریان در یک مدل دید ذخیره می شود و فعالیت در فرآیند بازسازی می شود)
- منبع صفحه بندی شمارش می شود ، صاحبخانه ها فعال می شوند و چیدمان مبهم نیست.
تغییرات API
-
PagingSource.getRefreshKey()
اکنون API پایدار است ( i22f6f ، b/173530980 ) -
PagingSource.invalidate
دیگر یک عملکرد باز نیست. اگر در صورت بروز عدم اعتبار ، نیاز به اطلاع رسانی دارید ، به جای غلبه بر Invalide ، با روش RegisterInvalidatedCallback تماس بگیرید. ( i628d9 ، b/173029013 ، b/137971356 ) - Pager اکنون به جای نشت API های آزمایشی در API عمومی غیر تجربی از طریق حاشیه نویسی Opt-In ، یک سازنده آزمایشی واحد در کنار سازندگان معمولی خود دارد. ( i9dc61 ، b/174531520 )
- به روزرسانی ویژگی های راحتی ،
CombinedLoadStates.refresh
،CombinedLoadStates.prepend
،CombinedLoadStates.append
برای انتقال فقط ازLoading
بهNotLoading
پس از اینکه هر دو حالت واسطه و منبع بارNotLoading
تا اطمینان حاصل شود که به روزرسانی از راه دور اعمال شده است. ( i65619 ) LoadParams.Pagesize حذف شده است (قبلاً از بین رفته است). توصیه این است که از
LoadParams.loadSize
در PAGINGSource خود استفاده کنید.LoadParams.loadSize
همیشه برابر باPagingConfig.pageSize
است به جز تماس اولیه بار که در آن برابر باPagingConfig.initialLoadSize
است.اگر در حال آزمایش DataSource Paging2 خود بدون استفاده از پیجر یا PagedList هستید ، اگر شما نیز تنظیم
initialLoadSize
انجام دهید ، ممکن استpageSize
باPagingConfig.pageSize
مطابقت نداشته باشد. اگر برای تست های شما مهم است ، به جای آن از Pager/PagedList استفاده کنید که به صورت داخلی PageSize را برای روش های بار DataSource شما تنظیم می کند. ( i98ac7 ، b/149157296 )
رفع اشکال
- تصادف به دلیل غیرقانونی در هنگام استفاده از جداکننده ها با مجموعه pagingConfig.maxsize. ( i0ed33 ، b/174787528 )
- رفع اشکال در جایی که حالت بار برای propend / append برای
NotLoading(endOfPaginationReached = true)
بلافاصله پس از بار اولیه در صورت تنظیم remotemediator ( i8cf5a ) به روز نشود (endofpaginationreached = true) - رفع اشکال در جایی که API های سمت مجری مانند .snapshot () ، .peek () و غیره ، لیست قبلی (خارج از تاریخ) را در به روزرسانی های ListUpDateCallback بازگردانند.
- رفع اشکال در جایی که اپراتورهای جداکننده در هنگام استفاده از remotemediator هدر یا پاورقی را اضافه نمی کنند
- رفع اشکالی که در آن به روزرسانی های LoadState برای بارگیری برای remotemediator در حالت بارگیری گیر می شود
- رفع اشکال در جایی که API سازگاری Paging2.0 ،
.asPagingSourceFactory()
، می تواند باعث شود کهDataSource
پشتیبان در Coroutinedispatcher نادرست تنظیم شود. این مسئله تصادف و موارد احتمالی ANR را برطرف می کند ، به خصوص هنگام استفاده از اجرای فعلی اتاق از PagingSource ، که از این مسیر سازگاری استفاده می کند.
نسخه 3.0.0-alpha10
2 دسامبر 2020
androidx.paging:paging-*:3.0.0-alpha10
منتشر می شود. نسخه 3.0.0-alpha10 شامل این تعهدات است.
تغییرات API
API های
dataRefreshFlow
وdataRefreshListener
deatrecated حذف شده اند زیرا آنها با به روزرسانی های LoadStateFlow / شنونده زائد هستند. برای کسانی که مهاجرت می کنند ، معادل LoadStateFlow:loadStateFlow.distinctUntilChangedBy { it.refresh } .filter { it.refresh is NotLoading }
( IB5570 ، b/173530908 )
رفع اشکال
- EndofPaginationReached برای
REFRESH
از RemoteMediator اکنون به درستی برای به روزرسانی های LoadState پخش می شود وAPPEND
از راه دور جلوگیری می کند و از شروعPREPEND
. ( i94a3f ، b/155290248 ) - ارائه یک لیست خالی یا به دلیل صفحه اولیه خالی یا فیلتر سنگین دیگر مانع از لگد زدن صفحه بندی
PREPEND
یاAPPEND
بارهای نمی شود. ( i3e702 ، b/168169730 ) - مسئله ای را برطرف می کند که در آن
getRefreshKey
در نسل های بعدی PagingSource در هنگام بی اعتبار شدن به سرعت فراخوانی نمی شود. ( i45460 ، b/170027530 )
مشارکت خارجی
- یک کلاس انتزاعی جدید InvalidatingPagingSourceFactory با یک API
.invalidate()
اضافه شده است که به همه منابع Pagings که منتشر می شود ، بی اعتبار می شود. با تشکر از @claraf3 ! ( IE71FC ، B/160716447 )
مسائل شناخته شده
- هدر و پاورقی های تبدیل از .insertseparators () ممکن است بلافاصله هنگام استفاده از remotemediator b/172254056 ظاهر نشود
- استفاده از remotemediator می تواند باعث شود که در صورت عدم اعتبار و
LoadState
PagingSource.load(LoadParams.Refresh(...))
قبل ازRemoteMediator.load()
بازگردد b/173717820 ، در صورت عدم اعتبار و pagingsource.
نسخه 3.0.0-alpha09
11 نوامبر 2020
androidx.paging:paging-*:3.0.0-alpha09
منتشر می شود. نسخه 3.0.0-alpha09 شامل این تعهدات است.
تغییرات API
- روشهای DatareFreshflow / شنونده را کاملاً با یک بند جایگزین کاهش دهید. ( i6e2dd )
رفع اشکال
- هنگام استفاده از جداکننده ها با remotemediator و یک بارهای از راه دور که بازگرداندن endofpagination هنوز در حال اجرا است ، رفع
IllegalArgumentException
در هنگام استفاده از جداکننده ها با remotemediator و بی اعتبار ایجاد می شود ( i3a260 )
نسخه 3.0.0-alpha08
28 اکتبر 2020
androidx.paging:paging-*:3.0.0-alpha08
منتشر می شود. نسخه 3.0.0-alpha08 شامل این تعهدات است.
تغییرات API
- انواع Kotlin / Java از
DataSource.InvalidatedCallback
با فعال کردن تبدیل SAM در Kotlin از طریق رابط کاربری (موجود در Kotlin 1.4) ترکیب شده است. این همچنین یک اشکال را برطرف می کند که در آن نوع Kotlin از تماس های نامعتبر پس از تبدیل توسط.map
یا.mapByPage
نامیده نمی شود. ( i1f244 ، b/165313046 )
رفع اشکال
- تعامل Paging با ViewPager به طور قابل توجهی بهبود یافته است. به طور خاص ، صفحه بندی دیگر به دلیل بی اعتبار بودن صفحه ، تماس
RemoteMediator#load
را لغو نمی کند. در صورت نیاز به تازه کردن ، دیگر درخواست بار ضمیمه/پیش پرداخت را ایجاد نمی کند ، تا زمانی که درخواست تازه سازی با موفقیت انجام شود. ( i6390b ، b/162252536 ) - بررسی API LINT برای MissingGetTermatchingBuilder برای Androidx فعال شده است ( i4bbea ، b/138602561 )
- رفع اشکال در جایی که
.withLoadState*
یارانConcatAdapter
به دلیل اطلاع رسانی از بازیافت از موضوع پس زمینه ( I18BB5 ، B/170988309 ) خراب می شوند - رفع اشکال در جایی که بارگذاری یک صفحه غیر خالی بسیار کوچک ، گاهی اوقات مانع از ایجاد صحیح بارهای پیش فرض می شود. IFFDA3 B/169259468
نسخه 3.0.0-alpha07
1 اکتبر 2020
androidx.paging:paging-*:3.0.0-alpha07
منتشر می شود. نسخه 3.0.0-alpha07 شامل این تعهدات است.
تغییرات API
- اپراتورهای مبتنی بر Guva Async PagingData اکنون یک مجری را به عنوان یک پارامتر می پذیرند تا زمینه اجرای را کنترل کنند. ( id4372 )
رفع اشکال
- استثناء indexoutofbounds ثابت که به دلیل شرایط مسابقه در Remotemediator پرتاب شده است. ( i00b7f ، b/165821814 )
- رفع یک وضعیت مسابقه در DataSource -> تبدیل PAGINGORECE که می تواند باعث شود که صفحه نمایش حاصل از آن سیگنال های بی اعتبار را از منبع داده نادیده بگیرد.
- مسئله ای را در منطق صفحه Fetchin رفع کرد که گاهی اوقات باعث می شود که نسل های جدیدی از PagingSource را انتخاب کند تا PagingDataAdapter.Refresh () فراخوانده شود
- مسئله ای را برطرف کرد که باعث می شود موقعیت پیمایش گاهی اوقات هنگام استفاده از یک منبع داده تبدیل شده به یک صفحه نمایش (مانند مورد تولید شده توسط اتاق) ، در رابطه با remotemediator از بین برود.
مشارکت خارجی
- با تشکر از simonschiller برای افزودن Rxjava2 ، Rxjava3 و اپراتورهای تحول Async مبتنی بر Guava برای PagingData!
نسخه 3.0.0-alpha06
2 سپتامبر 2020
androidx.paging:paging-*:3.0.0-alpha06
منتشر می شود. نسخه 3.0.0-alpha06 شامل این تعهدات است.
تغییرات API
-
UnsupportedOperationException
با پیام های واضح تر در مورد عدم پشتیبانی از شناسه های پایدار ، اکنون هر زمان کهPagingDataAdapter.setHasStableIds
خوانده می شود ، پرتاب می شود. ( IB3890 ، b/158801427 )
رفع اشکال
- insertsparators دیگر صفحات خالی را فیلتر نمی کند که اجازه می دهد فاصله پیش تنظیم توسط مجری احترام گذاشته شود حتی در مواردی که بسیاری از صفحات خالی درج شده اند. ( i9cff6 ، b/162538908 )
نسخه 3.0.0-alpha05
19 آگوست 2020
androidx.paging:paging-*:3.0.0-alpha05
منتشر می شود. نسخه 3.0.0-alpha05 شامل این تعهدات است.
رفع اشکال
- صفحات اکنون به درستی صفحات را حتی اگر داده های ارائه شده به شدت فیلتر کنند ، ترجیح می دهند
- بازگرداندن
LoadResult.Error
به یک بار محروم دیگر باعث نمی شود که دسترسی به موارد نادرست دوباره امتحان شود
مشارکت خارجی
- با تشکر از کلارا F برای کمک به پاکسازی برخی از تست ها! ( 549612 )
نسخه 3.0.0-alpha04
5 آگوست 2020
androidx.paging:paging-*:3.0.0-alpha04
منتشر می شود. نسخه 3.0.0-alpha04 شامل این تعهدات است.
تغییرات API
-
peek()
API بهAsyncPagingDataDiffer
وPagingDataAdapter
اضافه شده است تا امکان دسترسی به داده های ارائه شده بدون بارهای صفحه ماشه را فراهم کند. ( i38898 ، b/159104197 ) - یک
snapshot()
API را بهPagingDataAdapter
وAsyncPagingDataDiffer
اضافه کرد تا امکان بازیابی موارد ارائه شده را بدون شروع صفحه به دست آورد. ( i566b6 ، b/159104197 ) - یک سازنده
PagingData.from(List<T>)
اضافه کرد تا لیست های استاتیک ارائه شود ، که می تواند با جریان کلی PagingData ترکیب شود تا لیست های استاتیک در حالت های خاص نشان دهد ، به عنوان مثال ، قبل از اتمام تازه سازی اولیه یا به سادگی برای آزمایش تحولات. ( id134d ) - API های DataRefresh جریان / شنونده را کاهش می دهد زیرا آنها برای افشای وضعیت موارد ارائه شده در Refresh ، اما با پیشرفت در زمان تماس با LoadState / زمان پاسخگویی شنونده و ویژگی های موردی ، کار اضافی است ( IA19F3 )
- بسته های سازگاری rxjava3 اضافه شده برای
PagingSource
وRemoteMediator
( i49ef3 ، b/161480176 )
رفع اشکال
-
PositionalDataSource
از طریق یاورtoPagingSourceFactory
بهPagingSource
تبدیل شد ، از جملهPagingSource
که توسط اتاق تولید می شود اکنون به درستی خود را برای پشتیبانی از پرش علامت گذاری می کند. ( i3e84c ، b/162161201 ) - رفع اشکال در جایی که استفاده از نوع همزمان SubmitData گاهی اوقات منجر به مسابقه ای می شود و باعث ایجاد
ClosedSendChannelException
می شود ( I4D702 ، B/160192222 )
مشارکت خارجی
- با تشکر از Zac Sweers برای اضافه کردن بسته های سازگاری Rxjava3 به نمایندگی از Slack! ( i49ef3 ، b/161480176 )
نسخه 3.0.0-alpha03
22 جولای 2020
androidx.paging:paging-*:3.0.0-alpha03
منتشر می شود. نسخه 3.0.0-alpha03 شامل این تعهدات است.
تغییرات API
- سازنده PagingState اکنون عمومی است ، که باید آزمایشات GetRefreshkey () را آسانتر کند ( i8bf15 )
- برای حل ابهام بین انواع اصلی و کوتلین ، انواع مختلفی از عملکرد نقشه نقشه Kotlin از جاوا. ( IF7B23 ، b/161150011 )
- API های اضافی که به عنوان راحتی برای کاربران Kotlin در نظر گرفته شده اند ، JVMSynTheTic ( I56AE5 ) مشخص شده اند
- اضافه بار اضافه شده برای سازنده LoadResult.Page که موارد پیش فرض را از قبل و موارد بعد از count_undefined ( i47849 )
- اپراتورهای موجود در PagingData موجود روشهای تعلیق را می پذیرند و اپراتورهای غیر تعلیق New MapSync ، FlatmapSync و FilterSync را برای کاربران جاوا معرفی می کنند. روشهای تحول موجود به توابع پسوند منتقل شده است ، بنابراین کاربران Kotlin اکنون نیاز به وارد کردن آنها دارند. ( i34239 ، b/159983232 )
رفع اشکال
- منابع اتاق (و PositionalDataSource) در حال حاضر یک جداکننده پیشرو را به عنوان بخشی از صفحه اول به نمایش می گذارند ، بنابراین کاربر برای فاش کردن آن نیازی به پیمایش ندارد. ( i6f747 ، b/160257628 )
- دسترسی به کالاها در حال حاضر به طور صحیح بارهای PagingSource را به درستی ایجاد می کند تا زمانی که صفحه ای برگردانده شود که پس از تبدیل شدن توسط PagingData.Filter () ( I95625 ، B/158763195 ) شاخص درخواست شده را برآورده می کند.
- رفع اشکالی را برطرف کنید که در آن گاهی اوقات پیمایش پس از بازگرداندن یک خطای ، خطایی می تواند از PagingDataAdapter.Retry () جلوگیری کند. ( i1084f ، b/160194384 )
- مسئله ای را برطرف می کند که در آن دسترسی به کالا پس از رها کردن یک صفحه ممکن است صفحات را بارگیری نکند ، اگرچه دسترسی به کالا در پیشگیری بود ( IE95AE ، B/160038730 )
- تنظیم PagingConfig.MaxSize دیگر پس از یک رویداد قطره ، سایر افراد را قادر نمی سازد ( I2Be29 ، B/159667766 )
نسخه 3.0.0-alpha02
24 ژوئن 2020
androidx.paging:paging-*:3.0.0-alpha02
منتشر می شود. نسخه 3.0.0-alpha02 شامل این تعهدات است.
تغییرات API
- اضافه بار اضافه شده برای سازنده
PagingConfig
با مقادیر پیش فرض مشترک ( I39C50 ، B/158576040 ) - اضافه بار اضافه شده برای سازندگان
PagingDataAdapter
وAsyncPagingDataDiffer
با مقادیر پیش فرض مشترک ( IE91F5 ) - API های آداپتور ،
dataRefreshFlow
وdataRefreshListener
اکنون یک بولی را منتقل می کنند تا سیگنال دهند که آیاPagingData
خالی است ( I6E37E ، B/159054196 ) - API های Rxjava و Guava برای Remotemediator - RxRemotemediator و LeadableFuturerEmotEmediator اضافه شده است
- یاران اضافه شده به PagingState برای دسترسی به کالاهای مشترک مانند
isEmpty()
وfirstItemOrNull()
( i3b5b6 ، b/158892717 )
رفع اشکال
- Pager اکنون برای استفاده مجدد از منبع PagingSource در کارخانه ، برای جلوگیری از استفاده مجدد تصادفی از منابع نامعتبر نامعتبر ، که خطای نامشخصی ایجاد کرده است ، بررسی می کند ( I99809 ، B/158486430 )
- خرابی از RemoteMediator دیگر مانع از بارگیری منبع Pagings ( i38b1b ، b/158892717 )
- نسخه غیر تعلیق
submitData
دیگر باعث تصادف به دلیل جمع آوری همزمان در چندینPagingData
نمی شود که پس از نسخه تعلیقsubmitData
فراخوانی می شود. ( i26358 ، b/158048877 ) - ثابت "نمی تواند دو بار از پیجر جمع شود" استثناء که می تواند پس از تغییر پیکربندی رخ دهد ( I58BCC ، B/158784811 )
نسخه 3.0.0-alpha01
10 ژوئن 2020
androidx.paging:paging-*:3.0.0-alpha01
منتشر می شود. نسخه 3.0.0-alpha01 شامل این تعهدات است.
کتابخانه صفحه بندی به 3.0 به روز شده است تا چندین ویژگی مهم جدید را فعال کند.
ویژگی های جدید 3.0
- پشتیبانی از درجه یک از Coroutines Kotlin و جریان.
- پشتیبانی از بارگذاری async با Coroutines توابع تعلیق ، Rxjava Single یا Guava SanceableFuture Primitives .
- حالت بار و سیگنال های خطا برای طراحی پاسخگو UI ، از جمله آزمایش مجدد و قابلیت تجدید.
- پیشرفت در لایه مخزن
- رابط منبع داده ساده
- شبکه ساده + صفحه بندی پایگاه داده
- پشتیبانی لغو
- پیشرفت در لایه ارائه
مسائل شناخته شده
- Paging 3 Javadocs هنوز در دسترس نیست. به طور موقت ، لطفاً از راهنماهای مرتبط در بالا یا اسناد کوتلین استفاده کنید. ( b/158614050 )
نسخه 2.1.2
نسخه 2.1.2
18 مارس 2020
androidx.paging:paging:2.1.2
منتشر می شود. نسخه 2.1.2 شامل این تعهدات در برابر 2.1.0 است .
رفع اشکال
- رفع
IndexOutOfBoundsException
در موارد نادر هنگام تبدیل موقعیت در هنگام عدم اعتبار.
مسئله انتشار
نسخه صفحه بندی
2.1.1
به طور نادرست از یک شاخه غلط تنظیم شده منتشر شد و API های جزئی را که تا حدی اجرا شده و عملکردهای آینده را در یک نسخه آینده در معرض نمایش قرار داده اند ، منتشر کرد.صفحه بندی
2.1.2
حاوی رفع بار محور است که در ابتدا در 2.1.1 منتشر شده است ، اما این بار به درستی گیلاس در بالای نسخه 2.1.0 انتخاب شده است. اگر در حال حاضر در 2.1.1 هستید ، به شدت توصیه می شود به این نسخه ارتقا دهید.
نسخه 2.1.1
نسخه 2.1.1
18 دسامبر 2019
androidx.paging:paging-*:2.1.1
منتشر می شود. نسخه 2.1.1 شامل این تعهدات است .
رفع اشکال
- بارهای اولیه پیوسته از منابع PositionalDataS اکنون در هنگام غیرفعال کردن محل های دارایی در آخرین دسترسی محور است
نسخه 2.1.0
نسخه 2.1.0
25 ژانویه 2019
صفحه بندی 2.1.0
بدون تغییر از 2.1.0-rc01
منتشر می شود.
نسخه 2.1.0-RC01
6 دسامبر 2018
صفحه بندی 2.1.0-rc01
بدون تغییر از 2.1.0-beta01
منتشر می شود.
نسخه 2.1.0-beta01
1 نوامبر 2018
صفحه بندی 2.1.0-beta01
بدون تغییر از 2.1.0-alpha01
منتشر می شود.
نسخه 2.1.0-alpha01
12 اکتبر 2018
صفحه بندی 2.1.0-alpha01
دارای دو افزودنی اصلی - افت صفحه و کتابخانه های پسوند KTX برای هر مصنوعات - و همچنین چندین تغییر API و اشکالات دیگر است.
تغییرات API
- برای محدود کردن تعداد موارد بارگذاری شده در حافظه ،
PagedList.Config.Builder.setMaxSize()
اضافه شده است. -
androidx.paging.Config()
به عنوان یک جایگزین Kotlin برایPagedList.Config.Builder
اضافه شد -
androidx.paging.PagedList()
به عنوان جایگزین Kotlin برایPagedList.Builder
اضافه شده است - اضافه شده
DataSourceFactory.toLiveData()
به عنوان یک جایگزین Kotlin برایLivePagedListBuilder
-
DataSourceFactory.toObservable()
وtoFlowable()
به عنوان گزینه های Kotlin برایRxPagedListBuilder
اضافه شده است - اضافه شده
AsyncPagedListDiffer.addPagedListListener()
برای گوش دادن به هنگام تعویض PagedList. b/111698609 - اضافه شده
PagedListAdapter.onCurrentListChanged()
که از لیست قدیمی و جدید عبور می کند ، نوع قبلی را کاهش می دهد. - اضافه شده
PagedListAdapter/AsyncPagedListDiffer.submitList()
انواع مختلفی که پس از تفاوت ، یک پاسخ به تماس اضافی را انجام می دهد که باعث می شود اگر/هنگام نمایش صفحه نمایش داده شود. این به شما امکان می دهد یک مبادله PagedList را با سایر به روزرسانی های UI همزمان کنید. b/73781068 -
PagedList.getLoadedCount()
اضافه شده است تا به شما اطلاع دهد که چند مورد در حافظه وجود دارد. توجه داشته باشید که در صورت غیرفعال بودن محل ، مقدار بازده همیشه برابر است..size()
.
رفع اشکال
- اگر لیست ها از B/111591017 استفاده شوند ، شرایط مسابقه را برطرف کنید
-
PagedList.loadAround()
اکنون وقتی شاخص نامعتبر است ،IndexOutOfBoundsException
را پرتاب می کند. پیش از این می توانست با یک استثناء نامشخص دیگر سقوط کند. - یک مورد را برطرف کرد که یک اندازه بار اولیه بسیار کوچک به همراه داده های بدون تغییر منجر به بارگذاری بیشتر B/113122599 شود
نسخه 2.0.0
نسخه 2.0.0
1 اکتبر 2018
Paging 2.0.0
با یک اشکالات تک منتشر می شود.
رفع اشکال
- سقوط یک تصادف که می تواند با پیمایش بسیار سریع با استفاده از
PositionalDataSource
و متغیرها B/114635383 رخ دهد.
نسخه 2.0.0-beta01
2 جولای 2018
رفع اشکال
- ناپدید شدن محتوای ثابت در برخی موارد پیش پرداخت (متغیرهای غیرفعال ، PositionalDataSource) B/80149146
- (قبلاً در
1.0.1
منتشر شده است) تصادفات ثابت که در آنPagedListAdapter
وAsyncPagedListDiffer
نتوانسته است وقایع حرکت را نشان دهد. b/110711937
وابستگی های pre-androidx
برای نسخه های pre-androidx از صفحه بندی که در زیر آمده است ، این وابستگی ها را درج کنید:
dependencies {
def paging_version = "1.0.0"
implementation "android.arch.paging:runtime:$paging_version"
// alternatively - without Android dependencies for testing
testImplementation "android.arch.paging:common:$paging_version"
// optional - RxJava support
implementation "android.arch.paging:rxjava2:$paging_version"
}
نسخه 1.0.1
نسخه 1.0.1
26 ژوئن 2018
صفحه بندی 1.0.1
با یک اشکالات منفرد در runtime
منتشر می شود. ما به شدت استفاده از 1.0.1
را برای ثبات توصیه می کنیم. صفحه بندی Rxjava2 1.0.1
نیز منتشر شده و با 1.0.0-rc1
یکسان است.
رفع اشکال
- تصادفات ثابت که در آن
PagedListAdapter
وAsyncPagedListDiffer
در سیگنال حوادث حرکت نمی کنند. b/110711937
نسخه Rxjava2 1.0.0
Rxjava2 نسخه 1.0.0-RC1
16 مه 2018
Paging Rxjava2 1.0.0-rc1
در حال حرکت به سمت انتشار نامزد بدون تغییر از آلفا اولیه است.
نسخه 1.0.0
نسخه 1.0.0-RC1
19 آوریل 2018 نامزد انتشار صفحه بندی
ما هیچ مسئله شناخته شده دیگری یا ویژگی های جدید برنامه ریزی شده برای انتشار Paging 1.0.0
نداریم . لطفاً پروژه های خود را برای استفاده از 1.0.0-rc1
ارتقا دهید و به ما در نبرد در آزمایش آن کمک کنید تا بتوانیم یک سنگ جامد 1.0.0
حمل کنیم.
هیچ تغییری در این نسخه وجود ندارد ، همان 1.0.0-beta1
است.
نسخه 1.0.0-beta1
5 آوریل 2018
صفحه بندی برای مدت کوتاهی قبل از پیشرفت برای انتشار نامزد در بتا خواهد بود. ما در حال برنامه ریزی برای تغییرات بیشتر API برای Paging 1.0
نیستیم و نوار برای هرگونه تغییر API بسیار زیاد است.
پشتیبانی Alpha Rxjava2 برای صفحه بندی به عنوان یک ماژول اختیاری جداگانه ( android.arch.paging:rxjava2:1.0.0-alpha1
) منتشر می شود و تا زمانی که تثبیت شود ، به طور موقت نسخه می شوند.
این کتابخانه جدید جایگزین Rxjava2 برای LivePagedListBuilder
، قادر به ساخت S Observable
و S Flowable
، با استفاده از Scheduler
به جای Executor
است:
کاتلین
val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable()
جاوا
Observable<PagedList<Item>> pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable();
ویژگی های جدید
-
RxPagedListBuilder
از طریقandroid.arch.paging:rxjava2
Artifact اضافه می شود.
تغییرات API
API برای روشن شدن نقش مجریان در سازندگان تغییر می کند:
تغییر نام نامگذاری
setBackgroundThreadExecutor()
بهsetFetchExecutor()
(درPagedList.Builder
وLivePagedListBuilder
)تغییر نام نامگذاری
setMainThreadExecutor()
بهsetNotifyExecutor()
(درPagedList.Builder
).
ثابت
PagedList.mCallbacks
عضو خصوصی است.
رفع اشکال
LivePagedListBuilder
به جای اجزای قوس IO Thread Pool ، بار اولیهPagedList
بر روی مجری مشخص شده ایجاد می کند.رفتار نامعتبر ثابت در بسته بندی های
DataSource
داخلی (برای اجرایDataSource.map
و همچنین بارگیریPositionalDataSource
در محل کار با استفاده از محل کاربرد) B/77237534 استفاده می شود.
نسخه 1.0.0-alpha7
21 مارس 2018
صفحه بندی 1.0.0-alpha7
در کنار چرخه حیات 1.1.1
منتشر می شود. از آنجا که Paging Alpha7 به حرکت کلاس Function
ذکر شده در بالا بستگی دارد ، باید lifecycle:runtime
به android.arch.lifecycle:runtime:1.1.1
.
Paging alpha7
برنامه ریزی شده است که نسخه نهایی قبل از بازدید از بتا باشد.
تغییرات API
-
DataSource.LoadParams
اشیاء اکنون یک سازنده عمومی دارند وDataSource.LoadCallback
اشیاء اکنون انتزاعی هستند. این امکان بسته بندی یکDataSource
یا آزمایش مستقیم یکDataSource
با پاسخ به مسخره امکان پذیر می کند. b/72600421 - نقشه برداران برای منبع داده و داده های داده
-
map(Function<IN,OUT>)
به شما امکان می دهد نتایج بارگذاری شده توسط یکDataSource
را تبدیل ، بسته بندی یا تزئین کنید. -
mapByPage(<List<IN>,List<OUT>>)
برای پردازش دسته ای یکسان را امکان پذیر می کند (به عنوان مثال اگر موارد بارگیری شده از SQL علاوه بر این یک پایگاه داده جداگانه را جستجو کنید ، که می تواند به عنوان یک دسته انجام شود.)
-
-
PagedList#getDataSource()
به عنوان یک روش راحتی B/72611341 اضافه می شود - تمام کلاسهای مستهلک شده از API حذف شده اند
LivePagedListProvider
از جمله بقایای بستهrecyclerview.extensions
. -
DataSource.Factory
از یک رابط به یک کلاس انتزاعی تغییر می یابد تا عملکرد نقشه را فعال کند.
رفع اشکال
- سازندگان را تغییر داد تا نهایی شوند. b/70848565
- اجرای
DataSource
اتاق اکنون برای رسیدگی به نمایش داده های چند جدول ثابت است-این تعمیر در اتاق 1.1.0-beta1 موجود است ، به بالا مراجعه کنید. - رفع اشکال در جایی که
BoundaryCallback.onItemAtEndLoaded
در صورت فعال بودن مکان ها برایPositionalDataSource
مورد استفاده قرار نمی گیرد و اندازه کل چند اندازه دقیق از اندازه صفحه است.
نسخه 1.0.0-alpha5
22 ژانویه 2018
رفع اشکال
- بارگذاری صفحه هنگام غیرفعال کردن محل کار B/70573345
- ورود به سیستم اضافی برای ردیابی اشکال غیرقانونی leargumentexception b/70360195 (و رفع جانبی اتاق سوداگرانه)
- کد نمونه Javadoc B/70411933 ، B/71467637