صفحه بندی

کتابخانه صفحه‌بندی بارگیری داده‌ها را به تدریج و با آرامش در RecyclerView برنامه‌تان آسان‌تر می‌کند.

این جدول تمام مصنوعات موجود در گروه androidx.paging را فهرست می کند.

مصنوع انتشار پایدار کاندید را آزاد کنید نسخه بتا انتشار آلفا
صفحه بندی-* 3.3.4 - - -
صفحه بندی-نوشتن 3.3.4 - - -
آخرین به روز رسانی این کتابخانه در: 13 نوامبر 2024

اعلام وابستگی ها

برای افزودن وابستگی به 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 )

مشارکت خارجی

نسخه 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>> یا Static List<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

نسخه 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 )

مشارکت های خارجی

نسخه 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 برای RemoteMediator REFRESH 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) تنظیم شده است. این بدان معنی است که:

    1. اگر از RemoteMediator استفاده کنید، حالت های میانجی همیشه پر می شوند.
    2. اگر یک 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 فقط با نسخه Compose 1.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

مسائل شناخته شده

  • 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