পেজিং
এই টেবিলে androidx.paging গ্রুপের সব আর্টিফ্যাক্টের তালিকা আছে।
| আর্টিফ্যাক্ট | স্টেবল রিলিজ | রিলিজ ক্যান্ডিডেট | বিটা রিলিজ | আলফা রিলিজ |
|---|---|---|---|---|
| পেজিং-* | ৩.৫.৩ | - | - | - |
| paging-compose | ৩.৫.৩ | - | - | - |
ডিপেন্ডেন্সি ঘোষণা করা
Paging-এর উপর নির্ভরতা যোগ করতে, আপনাকে অবশ্যই নিজের প্রোজেক্টে Google Maven রিপোজিটরি যোগ করতে হবে। আরও তথ্যের জন্য Google-এর Maven রিপোজিটরি পড়ুন।
আপনার অ্যাপ বা মডিউলের জন্য build.gradle ফাইলে আপনার প্রয়োজনীয় আর্টিফ্যাক্টের জন্য ডিপেন্ডেন্সি যোগ করুন:
গ্ৰুভি
dependencies { def paging_version = "3.5.3" 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.5.3" }
Kotlin
dependencies { val paging_version = "3.5.3" 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.5.3") }
Kotlin এক্সটেনশন ব্যবহার করার বিষয়ে তথ্যের জন্য, ktx ডকুমেন্টেশন দেখুন।
ডিপেন্ডেন্সি সম্পর্কে আরও তথ্যের জন্য, বিল্ড ডিপেন্ডেন্সি যোগ করুন দেখুন।
মতামত
আপনার মতামত Jetpack-কে আরও ভালো করে তুলতে সাহায্য করে। আপনি যদি নতুন কোনও সমস্যা খুঁজে পান বা এই লাইব্রেরি উন্নত করার জন্য কোনও আইডিয়া থাকে, তাহলে আমাদের জানান। নতুন সমস্যা তৈরি করার আগে এই লাইব্রেরিতে আগে থেকে থাকা সমস্যা দেখে নিন। আপনি তারকাচিহ্ন বোতামে ক্লিক করে আগে থেকে থাকা কোনও সমস্যাতে আপনার ভোট যোগ করতে পারবেন।
আরও তথ্যের জন্য ইস্যু ট্র্যাকার ডকুমেন্টেশন দেখুন।
ভার্সন 3.5
ভার্সন ৩.৫.৩
১২ অক্টোবর, ২০২৬
androidx.paging:paging-*:3.5.3 রিলিজ করা হয়েছে। ভার্সন 3.5.3-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
RemoteMediatorকোনও দিকে পেজিনেশনের শেষে পৌঁছে গেলে এবং হেডার বা ফুটার টার্মিনাল সেপারেটরে কনভার্ট হয়ে গেলে,ItemSnapshotListFlowআরIllegalArgumentExceptionথ্রো করবে না। (I821c7, b/566336825)- লোড করা পৃষ্ঠা
PagingConfig.maxSize-এর বেশি হলে, ভিউপোর্ট যাতে ডেটা দিয়ে সঠিকভাবে পপুলেট করা থাকে তা নিশ্চিত করতে, লোড করা পৃষ্ঠা দুটির কম হবে না। (I037a0, b/565835910)
এক্সটার্নাল কন্ট্রিবিউশন
ইগর, b/565835910 বাগ ফিক্স জমা দেওয়ার জন্য ধন্যবাদ
ভার্সন 3.5.2
০৭ অক্টোবর, ২০২৬
androidx.paging:paging-*:3.5.2 রিলিজ করা হয়েছে। ভার্সন ৩.৫.২-এ এইসব কমিট আছে।
সমস্যার সমাধান
- প্রাথমিক রিফ্রেশ সম্পূর্ণ হওয়ার আগে করা
Pager.append()কল আরNoSuchElementExceptionদেখাবে না। অ্যাপেণ্ড কলটি নো-অপ হবে। (Ide387, b/556780796)
ভার্সন 3.5.1
১২ আগস্ট, ২০২৬
androidx.paging:paging-*:3.5.1 রিলিজ করা হয়েছে। ভার্সন 3.5.1-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- প্লেসহোল্ডারে স্ক্রল করার সময় সেপারেটর সহ পৃষ্ঠা রিফ্রেশ করলে
PagingSource.getRefreshKeyভুলanchorPositionপ্রদান করা সংক্রান্ত সমস্যা সমাধান করা হয়েছে, যা অনেক বড়। (I475f0, b/516565503)
ভার্সন 3.5.0
৬ মে, ২০২৬
androidx.paging:paging-*:3.5.0 রিলিজ করা হয়েছে। 3.5.0 ভার্সনে এইসব কমিট আছে।
3.4.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন:
Flow<PagingData>-কেFlow<ItemSnapshotList>-এ পরিবর্তন করতেFlow<PagingData>.asItemSnapshotListFlowঅপারেটর যোগ করা হয়েছে। এর অর্থ হল, লোড করা ডেটা এখন UI লেয়ারের বাইরে অ্যাক্সেস করা যাবে, যার ফলে আপনিFlow<ItemSnapshotList>-কে অন্যান্য ডেটা সোর্সের সাথে একত্রিত করতে পারবেন, লোকালভাবে পেজ করা ডেটা ক্যাশে ও পরিবর্তন করতে পারবেন অথবা UI স্টেট এবং আরও অনেক কিছুর অংশ হিসেবে পেজ করা ডেটা প্রকাশ করতে পারবেন।স্ক্রল না করেই ম্যানুয়ালি আরও ডেটা লোড করার জন্য এক্সটেনশন ফাংশন
Pager.appendওPager.prependযোগ করা হয়েছে।asItemSnapshotListFlowAPI ব্যবহার করার সময় লোড সংক্রান্ত সমস্যা থেকে রিকভার করতে এক্সটেনশন ফাংশনPager.refreshএবংPaging.retryযোগ করা হয়েছে।
ভার্সন 3.5.0-rc01
২২ এপ্রিল, ২০২৬
androidx.paging:paging-*:3.5.0-rc01 রিলিজ করা হয়েছে। ভার্সন 3.5.0-rc01-এ এইসব কমিট রয়েছে।
কোনও পরিবর্তন করা হয়নি
3.5.0-beta01ভার্সনের পরে উল্লেখযোগ্য কোনও পরিবর্তন করা হয়নি।
ভার্সন 3.5.0-beta01
৮ এপ্রিল, ২০২৬
androidx.paging:paging-*:3.5.0-beta01 রিলিজ করা হয়েছে। 3.5.0-beta01 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
Flow<PagingData>.asStateAPI-এর নাম পরিবর্তন করেFlow<PagingData>.asItemSnapshotListFlow(I0dc11, b/496548025) করা হয়েছে
ভার্সন 3.5.0-alpha01
১১ মার্চ, ২০২৬
androidx.paging:paging-*:3.5.0-alpha01 রিলিজ করা হয়েছে। 3.5.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।
নতুন ফিচার
paging-commonআর্টিফ্যাক্টে এখনFlow<PagingData>-এ একটি নতুনasStateফ্লো অপারেটর আছে যা এটিকেFlow<ItemSnapshotList>-এ কনভার্ট করে। এর ফলে এইসব সুবিধা আনলক করা যায়:- অন্যান্য ডেটা সোর্সের সাথে
ItemSnapshotList-এর ফ্লো একত্রিত করুন cachedInছাড়াই একাধিক কালেক্টরের সাথে ফ্লো শেয়ার করুন- স্থানীয়ভাবে পেজ করা ডেটা ক্যাশে করুন
- মেমরিতে পেজ করা ডেটা পরিবর্তন করা
- UI স্টেটের অংশ হিসেবে পেজ করা ডেটা এক্সপোজ করা
// In your ViewModel val pager = Pager(pagingConfig, pagingSourceFactory) val pagerFlow = pager.flow.asState() // alterantively convert the flow to a SharedFlow val pagerFlow = pager.flow.asState().stateIn() // In presenter layer val snapshotFlow = viewModel.pagerFlow.collectAsStateWithLifecycle(initialList) val snapshot = itemsFlow.value LazyColumn { items(items = snapshot.items) { ... } }- অন্যান্য ডেটা সোর্সের সাথে
এছাড়াও,
paging-commonআর্টিফ্যাক্টPager.appendএবংPager.prependAPI যোগ করেছে যাতে লোড করা আইটেমের যেকোনও প্রান্তে ম্যানুয়ালি লোড ট্রিগার করা যায়।paging-runtimeবাpaging-compose-এর সাথে ব্যবহার করা হলে, স্ক্রল করা ছাড়াও আরও ডেটা লোড করার বিকল্প প্রদান করে- নতুন
asStateAPI-এর সাথে ব্যবহার করা হলে, এটিই আরও ডেটা লোড করার একমাত্র উপায়
LazyColumn { item { /** * Load more items when users scroll near the top of loaded items. */ LaunchedEffect(viewModel) { viewModel.prepend() } } items(snapshot.items) { item -> Text("Item: $item") } item { /** * Load more items when users scroll near the bottom of loaded items. */ LaunchedEffect(viewModel) { viewModel.append() } } }asStateAPI ব্যবহার করার সময় লোড সংক্রান্ত সমস্যা থেকে রিকভার করতেPager.refreshএবংPager.retryযোগ করা হয়েছে। নতুন API-এর আরও স্যাম্পেল ব্যবহার দেখতে এই ডকুমেন্ট দেখুন। (I1e1e9, If3c87, Idbd48, Id1e1d, I816fe)
ভার্সন ৩.৪
ভার্সন ৩.৪.২
১১ মার্চ, ২০২৬
androidx.paging:paging-*:3.4.2 রিলিজ করা হয়েছে। ভার্সন 3.4.2-এ এইসব কমিট আছে।
কোনও পরিবর্তন করা হয়নি
- এই রিলিজে ৩.৪.১ ভার্সন থেকে কোনও API বা আচরণগত পরিবর্তন নেই।
ভার্সন ৩.৪.১
১১ ফেব্রুয়ারি, ২০২৬
androidx.paging:paging-*:3.4.1 রিলিজ করা হয়েছে। ভার্সন 3.4.1-এ এইসব কমিট রয়েছে।
ডিপেন্ডেন্সি আপডেট
- paging-guava-এর guava ডিপেন্ডেন্সি ভার্সন ৩১.১ থেকে ৩২.০.১-এ আপডেট করা হয়েছে।
ভার্সন 3.4.0
২৮ জানুয়ারি, ২০২৬
androidx.paging:paging-*:3.4.0 রিলিজ করা হয়েছে। ভার্সন 3.4.0-এ এইসব কমিট রয়েছে।
3.3.0 ভার্সনের পর থেকে হওয়া গুরুত্বপূর্ণ পরিবর্তন:
paging-common,paging-testingওpaging-compose-এ আরও KMP টার্গেট যোগ করা হয়েছে। মোটকথা, এগুলি এখন JVM(Android ও ডেস্কটপ), নেটিভ (Linux, iOS, watchOS, tvOS, macOS, MinGW) ও ওয়েব (JavaScript, WasmJS) প্ল্যাটফর্মে কাজ করে- Jetbrains-এর macosX64 টার্গেট বন্ধ করে দেওয়ার সাথে সামঞ্জস্য রেখে
paging-common,paging-testingওpaging-compose,macosX64,iosX64,watchosX64ওtvosX64-এর জন্য সহায়তা সরিয়ে দিয়েছে। - টার্গেট পজিশনের সবচেয়ে কাছাকাছি থাকা এবং ইনপুট প্রেডিকেটের সাথে ম্যাচ করা লোড করা আইটেম ফিরিয়ে আনতে নতুন
PagingStateAPIclosestItemAroundPositionযোগ করা হয়েছে। এটি আইটেম-ভিত্তিক রিফ্রেশ কী জেনারেট করতে ব্যবহার করা যেতে পারে যেখানে আদর্শ অ্যাঙ্করযোগ্য আইটেমটি আশেপাশে থাকে তবে সঠিক টার্গেট পজিশনে থাকে না।
ভার্সন 3.4.0-rc01
১৪ জানুয়ারি, ২০২৬
androidx.paging:paging-*:3.4.0-rc01 রিলিজ করা হয়েছে। 3.4.0-rc01 ভার্সনে এইসব কমিট রয়েছে।
নতুন ফিচার
- Jetbrains-এর macosX64 টার্গেট বন্ধ করে দেওয়ার সাথে সামঞ্জস্য রেখে নিম্নলিখিত KMP প্ল্যাটফর্মের জন্য সহায়তা সরিয়ে দেওয়া হয়েছে:
macosX64,iosX64,watchosX64এবংtvosX64। (7cb9a4)
ভার্সন 3.4.0-beta01
১৭ ডিসেম্বর, ২০২৫
androidx.paging:paging-*:3.4.0-beta01 রিলিজ করা হয়েছে। 3.4.0-beta01 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
RecyclerViewওRefreshলোডের মধ্যে রেস সংক্রান্ত সমস্যা সমাধান করুন যার ফলেRecyclerView-এIndexOutOfBoundsExceptionহয়। ধারাবাহিকRefreshলোড হওয়ার কারণে UI আপডেট বাধা পেলে, পেজিং স্টেটRecyclerView-এর সাথে ডিসিঙ্ক হতে পারে। রিফ্রেশ করার সময় কোনও বাধা এলে (যেমন, পরপরRefreshলোড হলে), পেজিংকে রিফ্রেশ করার আগের অবস্থায় রিসেট করে এই সমস্যার সমাধান করা হয়। (I771b0, b/409809768)
ভার্সন 3.4.0-alpha04
১০ সেপ্টেম্বর, ২০২৫
androidx.paging:paging-*:3.4.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 3.4.0-alpha04-এ এইসব কমিট আছে।
API-তে পরিবর্তন
- টার্গেট পজিশনের সবচেয়ে কাছাকাছি থাকা এবং ইনপুট প্রেডিকেটের সাথে ম্যাচ করা লোড করা আইটেম ফিরিয়ে আনতে নতুন
PagingStateAPIclosestItemAroundPositionযোগ করা হয়েছে। এটি আইটেম-ভিত্তিক রিফ্রেশ কী তৈরি করতে ব্যবহার করা যেতে পারে যেখানে আদর্শ অ্যাঙ্করযোগ্য আইটেমটি কাছাকাছি থাকে তবে সঠিক টার্গেট পজিশনে থাকে না। (I96e5c, b/440187139)
ভার্সন 3.4.0-alpha03
২৭ আগস্ট, ২০২৫
androidx.paging:paging-*:3.4.0-alpha03 রিলিজ করা হয়েছে। 3.4.0-alpha03 ভার্সনে এইসব কমিট আছে।
নতুন ফিচার
- Paging-common নতুন Kotlin Multiplatform (KMP) টার্গেট হিসেবে ডেস্কটপ যোগ করেছে। এটি এখন JVM(Android ও ডেস্কটপ), নেটিভ (Linux, iOS, watchOS, tvOS, macOS, MinGW) এবং ওয়েব (JavaScript, WasmJS) প্ল্যাটফর্মে কাজ করে। (Id2483, b/436884811)
- পেজিং-টেস্টিংয়ে নতুন Kotlin Multiplatform (KMP) টার্গেট যোগ করা হয়েছে। এটি এখন JVM(Android ও ডেস্কটপ), নেটিভ (Linux, iOS, watchOS, tvOS, macOS, MinGW) ও ওয়েব (JavaScript, WasmJS) প্ল্যাটফর্মে কাজ করে। (I0c543, b/435014650)
- Paging-compose নতুন Kotlin Multiplatform (KMP) টার্গেট যোগ করেছে। এটি এখন JVM(Android ও ডেস্কটপ), নেটিভ (Linux, iOS, watchOS, tvOS, macOS, MinGW) ও ওয়েব (JavaScript, WasmJS)-এ কাজ করে। (I70d44, b/436884801)
API-তে পরিবর্তন
- ডিফল্ট minSdk API 21 থেকে API 23-এ সরানো হচ্ছে (Ibdfca, b/380448311, b/435705964, b/435705223)
ভার্সন 3.4.0-alpha02
৩০ জুলাই, ২০২৫
androidx.paging:paging-*:3.4.0-alpha02 রিলিজ করা হয়েছে। 3.4.0-alpha02 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
PagingData.fromএখনplaceholdersBeforeওplaceholdersAfterসেট করার অনুমতি দেয়। মনে রাখবেন, এইসব প্লেসহোল্ডারের মধ্যে দিয়ে স্ক্রল করলে লোড ট্রিগার হয় না। (I06983)
ভার্সন 3.4.0-alpha01
২ জুলাই, ২০২৫
androidx.paging:paging-*:3.4.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 3.4.0-alpha01-এ এইসব কমিট আছে।
নতুন ফিচার
- পেজিং নিম্নলিখিত KMP টার্গেট যোগ করেছে: watchos, tvos, mingwX64, watchosDeviceArm64 এবং linuxArm64. (I237dd, Ia62b3, b/368046982, Icf15d, b/364652024, I139d3, b/338268719)
সমস্যার সমাধান
- Android ইউনিট টেস্ট যা Paging 3.3 বা তার পরবর্তী ভার্সন থেকে পুল করা হয়, তা আর
PagingLoggerথেকে থ্রো করবে না (Ia9400, b/331684448) RecyclerViewআপডেট করার সময় ব্যবহারকারী স্ক্রল করলেRecyclerView-এIndexOutOfBoundsExceptionদেখানোর সমস্যা সমাধান করা হয়েছে (Id1f16, b/381024738)- স্ক্রল করার সময় রিফ্রেশ করলে পেজিং আরও লোড ট্রিগার করতে না পারার সমস্যা সমাধান করা হয়েছে। (I60ca5, b/352586078)
- পেজিং আইটেম রিফ্রেশ করার সময় স্ক্রল করলে ক্র্যাশ হওয়ার সমস্যার সমাধান করা হয়েছে। (I8c65a, b/347649763)
ভার্সন 3.3
ভার্সন 3.3.6
১২ ফেব্রুয়ারি, ২০২৫
androidx.paging:paging-*:3.3.6 রিলিজ করা হয়েছে। ভার্সন 3.3.6-এ এইসব কমিট আছে।
সমস্যার সমাধান
- প্রাথমিক রিফ্রেশ করার সময় পাঠানো রিফ্রেশ ও আবার চেষ্টা করার সিগন্যাল এখন স্টোর করা হবে এবং পেজিং প্রেজেন্টার রেডি হয়ে গেলে অটোমেটিক আবার পাঠানো হবে।
এক্সটার্নাল কন্ট্রিবিউশন
ভার্সন 3.3.5
১১ ডিসেম্বর, ২০২৪
androidx.paging:paging-*:3.3.5 রিলিজ করা হয়েছে। ভার্সন 3.3.5-এ এইসব কমিট আছে।
সমস্যার সমাধান
RecyclerViewআপডেট করার সময় ব্যবহারকারী স্ক্রল করলেRecyclerViewIndexOutOfBoundsExceptionদেখায়, এই সমস্যার সমাধান করা হয়েছে। (Id1f16, b/381024738)
ভার্সন 3.3.4
১৩ নভেম্বর, ২০২৪
androidx.paging:paging-*:3.3.4 রিলিজ করা হয়েছে। ভার্সন 3.3.4-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- Android ইউনিট টেস্টে Paging 3.3 বা তার পরবর্তী ভার্সন পুল করলে,
Method isLoggable in android.util.Log not mocked-এর মতো কোনও সমস্যা আর দেখাবে না। (Ia9400, b/331684448)
ভার্সন 3.3.2
৭ আগস্ট, ২০২৪
androidx.paging:paging-*:3.3.2 রিলিজ করা হয়েছে। ভার্সন 3.3.2-এ এইসব কমিট রয়েছে।
নতুন ফিচার
paging-commonএবংpaging-testingনতুন Kotlin-Multiplatform টার্গেট যোগ করেছে:watchos,tvosএবংlinuxArm64(90c9768), (53e0eca)
ভার্সন 3.3.1
২৪ জুলাই, ২০২৪
androidx.paging:paging-*:3.3.1 রিলিজ করা হয়েছে। ভার্সন 3.3.1-এ এইসব কমিট আছে।
সমস্যার সমাধান
- স্ক্রল করার সময় ব্যাক-আপ ডেটা সোর্স রিফ্রেশ করা হলে,
AsyncPagingDataDifferবাRecyclerView-এর সাথে ব্যবহার করাPagingDataAdapter-এর মতো এর উপরে তৈরি করা API আরও লোড ট্রিগার করতে না পারার সমস্যা সমাধান করা হয়েছে। (I60ca5, b/352586078) PagingDataAdapterবাAsyncPagingDataDifferব্যবহার করেRecyclerViewস্ক্রল করার সময় ব্যাকিং ডেটা সোর্স থেকে আইটেম সরিয়ে দেওয়ার সময় ক্র্যাশ হওয়ার সমস্যার সমাধান করা হয়েছে। (I8c65a, b/347649763)
ভার্সন 3.3.0
১৪ মে, ২০২৪
androidx.paging:paging-*:3.3.0 রিলিজ করা হয়েছে। ভার্সন 3.3.0-এ এইসব কমিট আছে।
3.2.0 ভার্সনের পর থেকে হওয়া গুরুত্বপূর্ণ পরিবর্তন
PagingDataPresenterএখন একটি সর্বজনীন ক্লাস। ইন্টার্নাল পেজিং API বাpaging-runtime-এরAsyncPagingDataDiffer-এর প্রয়োজন ছাড়াই এখনPagingDataPresenter-এর উপরে মাল্টিপ্ল্যাটফর্ম প্রেজেন্টার তৈরি করা যাবে।hasErrorওisIdle-এ নতুনLoadStatesওCombinedLoadStatesহেল্পার পদ্ধতি যোগ করা হয়েছে, যাতে চেক করা যায় যেLoadStatesযথাক্রমে Error বাNotLoadingস্টেটে আছে কিনা। এছাড়াও,Flow<CombinedLoadStates>-এ একটি নতুনawaitNotLoading()Kotlin এক্সটেনশন পদ্ধতি যোগ করা হয়েছে যা লোডNotLoadingবা সমস্যা সংক্রান্ত স্ট্যাটাসে সেটেল না হওয়া পর্যন্ত অপেক্ষা করে।PagingData.empty()এখন ডিফল্ট হিসেবেNotLoadingস্টেট ডিসপ্যাচ করে, যদি না কাস্টমLoadStatesএর কনস্ট্রাক্টরে পাস করা হয়। এটি বর্তমান আচরণ থেকে আলাদা যেখানেPagingDataAdapter-এ জমা দেওয়ার সময় এটিLoadStatesডিসপ্যাচ করে না বাLazyPagingItemsহিসাবে সংগ্রহ করার সময় এটি লোডিং স্টেট ডিসপ্যাচ করে।LazyPagingItemsহিসেবে সংগ্রহ করা হলে, প্রাথমিক কম্পোজিশনের পরে এটি অবিলম্বে একটি খালি তালিকাও দেখাবে।
Kotlin মাল্টিপ্ল্যাটফর্মের সাথে মানানসই
CashApp-এর multiplatform-paging প্রোজেক্ট থেকে আপস্ট্রিম করা কাজের জন্য, পেজিং এখন Kotlin Multiplatform-এর সাথে মানানসই আর্টিফ্যাক্ট শিপ করে।
paging-commonসব Paging 3 APIcommon-এ সরিয়ে দিয়েছে এবং এখন Android ছাড়াও jvm ও iOS-এর সাথে মানানসই।paging-testingতার কোডcommon-এ সরিয়ে নিয়ে গেছে এবং এখন Android ছাড়াও jvm এবং iOS-এর সাথে মানানসই।paging-composeতার কোডcommon-এ সরিয়ে নিয়ে গেছে এবংandroidx.compose-এর মাল্টিপ্ল্যাটফর্ম সাপোর্টের সাথে ম্যাচ করে এমন একটি Android আর্টিফ্যাক্ট শিপ করে।paging-runtime,paging-guava,paging-rxjava2এবংpaging-rxjava3শুধুমাত্র Android-এ কাজ করবে।
ভার্সন 3.3.0-rc01
১ মে, ২০২৪
Paging 3.3.0-beta01-এ কোনও পরিবর্তন না করেই androidx.paging:paging-*:3.3.0-rc01 রিলিজ করা হয়েছে। ভার্সন 3.3.0-rc01-এ এইসব কমিট রয়েছে।
ভার্সন 3.3.0-beta01
৩ এপ্রিল, ২০২৪
androidx.paging:paging-*:3.3.0-beta01-এ কোনও উল্লেখযোগ্য পরিবর্তন করা হয়নি। ভার্সন 3.3.0-beta01-এ এইসব কমিট রয়েছে।
ভার্সন 3.3.0-alpha05
২০ মার্চ, ২০২৪
androidx.paging:paging-*:3.3.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 3.3.0-alpha05-এ এইসব কমিট আছে।
API-তে পরিবর্তন
- পেজিং এখন সাধারণ কোডের জন্য AndroidX অ্যানোটেশন
@MainThreadঅ্যানোটেশন ব্যবহার করে। (I78f0d, b/327682438)
ভার্সন 3.3.0-alpha04
৬ মার্চ, ২০২৪
androidx.paging:paging-*:3.3.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 3.3.0-alpha04-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- Kotlin মাল্টিপ্ল্যাটফর্মের সাথে সামঞ্জস্য যোগ করা সম্পর্কিত ডকুমেন্টেশনে হওয়া ছোটখাটো সমস্যা সমাধান করা হয়েছে। (aosp/2950785)
ভার্সন 3.3.0-alpha03
৭ ফেব্রুয়ারি, ২০২৪
androidx.paging:paging-*:3.3.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 3.3.0-alpha03-এ এইসব কমিট আছে।
নতুন ফিচার
PagingDataPresenterএখন একটি সর্বজনীন ক্লাস। ইন্টার্নাল পেজিং API বাpaging-runtime-এরAsyncPagingDataDiffer-এর প্রয়োজন ছাড়াই এখনPagingDataPresenter-এর উপরে মাল্টিপ্ল্যাটফর্ম প্রেজেন্টার তৈরি করা যাবে। (Id1f74, b/315214786)LoadStates-এ কোনও সমস্যা আছে কিনা বাNotLoadingস্ট্যাটাসে আছে কিনা তা চেক করার জন্য নতুনLoadStatesএবংCombinedLoadStatesসহায়ক পদ্ধতি যোগ করা হয়েছে। এছাড়াও, একটি নতুন API যোগ করা হয়েছে যাLoadStateFlow-এ অপেক্ষা করে যতক্ষণ না লোডNotLoadingবা সমস্যা সংক্রান্ত স্ট্যাটাসে সেটেল হয়। (Id6c67)
আচরণে পরিবর্তন
PagingData.empty()এখন ডিফল্ট হিসেবেNotLoadingস্টেট ডিসপ্যাচ করে, যদি না কাস্টমLoadStatesএর কনস্ট্রাক্টরে পাস করা হয়। এটি বর্তমান আচরণ থেকে আলাদা যেখানেPagingDataAdapter-এ জমা দেওয়ার সময় এটিLoadStatesডিসপ্যাচ করে না বাLazyPagingItemsহিসাবে সংগ্রহ করার সময় এটি লোডিং স্টেট ডিসপ্যাচ করে।LazyPagingItemsহিসেবে সংগ্রহ করা হলে, এটি এখন প্রাথমিক কম্পোজিশনের সাথে সাথেই একটি খালি তালিকাও দেখাবে। (I4d11d, b/301833847)
ভার্সন 3.3.0-alpha02
২০ সেপ্টেম্বর, ২০২৩
androidx.paging:paging-*:3.3.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 3.3.0-alpha02-এ এইসব কমিট আছে।
Kotlin মাল্টিপ্ল্যাটফর্মের সাথে মানানসই
পেজিং এখন Kotlin Multiplatform-এর সাথে মানানসই আর্টিফ্যাক্ট শিপ করে, CashApp-এর multiplatform-paging প্রোজেক্ট থেকে আপস্ট্রিম করা কাজের জন্য এটি সম্ভব হয়েছে। এটি আমাদের দুটি রিপোজিটরির মধ্যে পার্থক্য এড়াতে এবং তাদের সামঞ্জস্যপূর্ণ রাখতে সাহায্য করবে।
paging-commonসব Paging 3 APIcommon-এ সরিয়ে দিয়েছে এবং এখন Android ছাড়াও jvm ও iOS-এর সাথে মানানসই।paging-testingতার কোডcommon-এ সরিয়ে নিয়ে গেছে এবং এখন Android ছাড়াও jvm এবং iOS-এর সাথে মানানসই।paging-composeতার কোডcommon-এ সরিয়ে নিয়ে গেছে এবংandroidx.compose-এর মাল্টিপ্ল্যাটফর্ম সাপোর্টের সাথে ম্যাচ করে এমন একটি Android আর্টিফ্যাক্ট শিপ করে।paging-runtime,paging-guava,paging-rxjava2এবংpaging-rxjava3শুধুমাত্র Android-এ কাজ করবে।
API-তে পরিবর্তন
- পাবলিক Logger ইন্টারফেস যা শুধুমাত্র ইন্টার্নাল ব্যবহারের জন্য ছিল তা বন্ধ করে দেওয়া হয়েছে (I16e95, b/288623117)
এক্সটার্নাল কন্ট্রিবিউশন
- Cash App-এর veyndan-কে ধন্যবাদ, Paging-কে Kotlin Multiplatform-এ (#560, #561, #562, #573, #576, #577, #578, #579, #580, #581, #583, #584, #586, #609) সরানোর ব্যাপারে সাহায্য করার জন্য ধন্যবাদ
ভার্সন 3.3.0-alpha01
২০ সেপ্টেম্বর, ২০২৩
- এটি androidx.paging লাইব্রেরির প্রথম মাল্টিপ্ল্যাটফর্ম রিলিজ। এই ভার্সনে শুধু
*-jvmও*-androidআর্টিফ্যাক্ট আছে। macOS, iOS ও Linux ভ্যারিয়েন্টের জন্য3.3.0-alpha02ব্যবহার করুন।
ভার্সন ৩.২
ভার্সন ৩.২.১
৬ সেপ্টেম্বর, ২০২৩
androidx.paging:paging-*:3.2.1 রিলিজ করা হয়েছে। ভার্সন 3.2.1-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- পেজিং টেস্টিং আর্টিফ্যাক্টের
asSnapshot()API-তেPagingData.from(List)ব্যবহার করে তৈরি করা ফ্লো পাস করা হলে, সেটি হ্যাং হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে। কারণ, লোডিং কখন শেষ হয়েছে সেই ব্যাপারেasSnapshot()-এর কাছে কোনও তথ্য থাকে না (PagingData.from(List, LoadStates)ওভারলোডের মতো নয়)। এই সমাধান শুধুমাত্র সম্পূর্ণ করা যায় এমন ফ্লোয়ের (যেমন,flowOf(PagingData.from(...))) ক্ষেত্রে কাজ করে। সম্পূর্ণ করা যায় না এমন ফ্লোয়ের (যেমন,MutableStateFlow) ক্ষেত্রেPagingData.fromওভারলোড ব্যবহার করুন যাLoadStatesপ্রদান করে। (I502c3) - লোডিং সম্পূর্ণ হওয়ার সাথে সাথেই একই ফ্রেমে নতুন ডেটা যাতে উপলভ্য হয় তা নিশ্চিত করতে, পেজিং কম্পোজ এখন ইন্টার্নালি
AndroidUiDispatcher.Mainব্যবহার করে। (Ia55af)
ভার্সন 3.2.0
২৬ জুলাই, ২০২৩
androidx.paging:paging-*:3.2.0 রিলিজ করা হয়েছে। ভার্সন 3.2.0-এ এইসব কমিট রয়েছে।
3.1.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন
- পেজিং কম্পোজ API স্টেবিলিটিতে পৌঁছেছে এবং পেজিংয়ের বাকি অংশে মার্জ করা হয়েছে যেখানে এর ভার্সন এখন অন্যান্য সব পেজিং আর্টফ্যাক্টের সাথে ম্যাচ করে। 3.1.0 থেকে হওয়া পরিবর্তনগুলির মধ্যে এগুলি অন্তর্ভুক্ত:
PagingData.from(fakeData)তৈরি করে এবংPagingData-কেMutableStateFlow-এ (যেমন,MutableStateFlow(PagingData.from(listOf(1, 2, 3)))) র্যাপ করে ফেক ডেটার তালিকা প্রিভিউ করার জন্য সহায়তা। প্রিভিউ করার জন্যcollectAsLazyPagingItems()-এর রিসিভার হিসেবে এই ফ্লো@Previewকম্পোজেবলে পাস করুন।- Wear ও TV লাইব্রেরি থেকে
LazyVerticalGridওHorizontalPager-এর মতো সব লেজি লেআউট ও কাস্টম লেজি কম্পোনেন্ট কাজ করে। এটি নতুন লোয়ার লেভেলLazyPagingItemsএক্সটেনশন পদ্ধতিitemKeyএবংitemContentType-এর মাধ্যমে করা হয়েছে, যা আপনাকেkeyএবংcontentTypeপ্যারামিটার স্ট্যান্ডার্ডitemsAPI-তে প্রয়োগ করতে সাহায্য করে, যা আগে থেকেইLazyColumn,LazyVerticalGrid-এর জন্য উপলভ্য এবংHorizontalPager-এর মতো API-তে এর সমতুল্য। items(lazyPagingItems)এবংitemsIndexed(lazyPagingItems)যা শুধুমাত্রLazyListScope-এ কাজ করে তা বন্ধ করে দেওয়া হয়েছে।
- নতুন
paging-testingআর্টিফ্যাক্ট যা আপনার অ্যাপের প্রতিটি লেয়ারের ইউনিট টেস্টিং এবং আইসোলেশনে পেজিংয়ের সাথে এর ইন্টিগ্রেশনকে কেন্দ্র করে ডিজাইন করা API প্রদান করে। যেমন, এর মধ্যে অন্তর্ভুক্ত হলTestPagerক্লাস যা আপনাকে পেজার এবং আসল UI থেকে স্বাধীনভাবে আপনার নিজস্ব কাস্টমPagingSourceইমপ্লিমেন্টেশনের আচরণ যাচাই করতে দেয়।-
asPagingSourceFactoryFlow<List<Value>>বা স্ট্যাটিকList<Value>-কেPagingSourceFactory-এ পরিবর্তন করার API, যা পরীক্ষার সময় Pager-এ পাস করা যেতে পারে Flow<PagingData<Value>>-এasSnapshotKotlin এক্সটেনশন, যাFlow<PagingData<Value>>-কে সরাসরিList<Value>-এ অনুবাদ করে।asSnapshot lambdaআপনাকেscrollToবাappendScrollWhile-এর মতো API-এর মাধ্যমে আপনার অ্যাপের UI-এর মতো দেখতে একটি UI তৈরি করতে দেয়, যাতে আপনি যাচাই করতে পারেন যে পেজ করা ডেটার সেটের যেকোনও পয়েন্টে ডেটার স্ন্যাপশট সঠিক আছে কিনা।
- দুটি লেভেলে পেজিং ডিবাগিং তথ্য প্রকাশ করতে ডিফল্ট লগ যোগ করা হয়েছে:
VERBOSEএবংDEBUG।adb shell setprop log.tag.Paging [DEBUG|VERBOSE]কমান্ডের মাধ্যমে লগ চালু করা যেতে পারে। এটি ভিউ সহ পেজিং বা কম্পোজ সহ পেজিং, দুটির ক্ষেত্রেই প্রযোজ্য। PagingDataAdapterএবংAsyncPagingDataDiffer-এর জন্য কনস্ট্রাক্টর যোগ করা হয়েছে যাCoroutineDispatcher-এর পরিবর্তেCoroutineContextগ্রহণ করে।- নতুন
PagingSourceFactoryফাংশনাল ইন্টারফেস যোগ করা হয়েছে যা আগের () ->PagingSourceল্যাম্বডার চেয়ে আরও স্পষ্ট API সারফেস প্রদান করে। Pager ইনস্ট্যানশিয়েট করার জন্য এই ফ্যাক্টরি ব্যবহার করা যেতে পারে।
ভার্সন 3.2.0-rc01
২১ জুন, ২০২৩
androidx.paging:paging-*:3.2.0-rc01 রিলিজ করা হয়েছে। ভার্সন 3.2.0-rc01-এ এইসব কমিট রয়েছে।
এক্সটার্নাল কন্ট্রিবিউশন
- Android/JVM-এর নির্দিষ্টতা থেকে পেজিং সরানোর কাজে কন্ট্রিবিউট করার জন্য Veyndan-কে ধন্যবাদ। (#৫৫৩, #৫৫৪, #৫৫৫, #৫৫৯)
ভার্সন 3.2.0-beta01
৭ জুন, ২০২৩
androidx.paging:paging-*:3.2.0-beta01 রিলিজ করা হয়েছে। ভার্সন 3.2.0-beta01-এ এইসব কমিট আছে।
পেজিং কম্পোজ
- পেজিং কম্পোজ আনুষ্ঠানিকভাবে API স্টেবিলিটিতে পৌঁছেছে। সেই জন্য,
1.0.0-alpha20থেকে ভার্সন আপডেট করা হয়েছে যাতে এখন এটি অন্যান্য পেজিং আর্টিফ্যাক্টের ভার্সনের সাথে ম্যাচ করে।
API-তে পরিবর্তন
- পেজিং কম্পোজ থেকে বন্ধ হয়ে যাওয়া
items(LazyPagingItems)এবংitemsIndexed(LazyPagingItems)API সরিয়ে দেওয়া হয়েছে। তাদের রিপ্লেসমেন্ট API-এর উদাহরণ দেখতে পেজিং কম্পোজ1.0.0-alpha20রিলিজ নোট দেখুন। (I9626e)
ভার্সন 3.2.0-alpha06
২৪ মে, ২০২৩
androidx.paging:paging-*:3.2.0-alpha06 রিলিজ করা হয়েছে। ভার্সন 3.2.0-alpha06-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- নতুন
PagingSourceFactoryফাংশনাল ইন্টারফেস যোগ করা হয়েছে যা আগে থেকে থাকা() -> PagingSourceল্যাম্বডার থেকে আরও স্পষ্ট API সারফেস প্রদান করে।Pager-এর ইনস্ট্যান্স তৈরি করতে এই ফ্যাক্টরি ব্যবহার করা যেতে পারে। (I33165, b/280655188) paging-testingAPI-এরList<Value>.asPagingSourceFactory()নতুন ভার্সন যোগ করা হয়েছে, যাPagingSourceFactoryপেতে সাহায্য করে এবং শুধু ডেটার অপরিবর্তনীয় তালিকা থেকে লোড হয়। স্ট্যাটিক ডেটার একাধিক জেনারেশন নিয়ে পরীক্ষা করার জন্যFlow<List<Value>>-এ আগে থেকে থাকা এক্সটেনশন এখনও ব্যবহার করা উচিত। (Id34d1, b/280655188)
API-তে পরিবর্তন
- পেজিং-টেস্টিংয়ের সমস্ত পাবলিক API এখন
@VisibleForTestingদিয়ে অ্যানোটেট করা হয়েছে যাতে এগুলি শুধুমাত্র টেস্টেই ব্যবহার করা যায়। (I7db6e) asSnapshotAPI-তে আরCoroutineScopeপাস করার প্রয়োজন নেই। এটি এখন ডিফল্ট হিসেবে এর পেরেন্ট স্কোপ থেকে প্রাপ্ত কনটেক্সট ব্যবহার করে। (Id0a78, b/282240990)TestPagerকনস্ট্রাক্টর প্যারামিটারকে আবার সাজানো হয়েছে যাতে আসলPagerকনস্ট্রাক্টর প্যারামিটারের (I6185a) ক্রমের সাথে স্বজ্ঞাতভাবে মিলে যায়- টাইপ
() -> PagingSource<Key, Value>থেকে টাইপPagingSourceFactory<Key, Value>-এ মাইগ্রেট করা পেজিং-টেস্টিংয়ের ল্যাম্বডা ব্যবহার। (I4a950, b/280655188)
আচরণে পরিবর্তন
asSnapshotপেজিং টেস্ট চালানোর জন্য মূল ডিসপ্যাচার আর প্রয়োজন নেই। এটি সেট করলে টেস্টের আচরণে আর কোনও পরিবর্তন হয় না। (Ie56ea)
ভার্সন 3.2.0-alpha05
৩ মে, ২০২৩
androidx.paging:paging-*:3.2.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 3.2.0-alpha05-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
asSnapshot-এর পেজিং টেস্টিং API এখন ডিফল্ট হিসেবে এরloadOperationsপ্যারামিটারকে ফাঁকা ল্যাম্বডাতে সেট করে। এটি প্রাথমিক রিফ্রেশ লোড থেকে ডেটা ফিরিয়ে আনার জন্য কোনও লোড অপারেশন পাস না করেইasSnapshotকল করার অনুমতি দেয়। (Ied354, b/277233770)
ডকুমেন্টেশন সংক্রান্ত উন্নতি
asPagingSourceFactory()-এর ডকুমেন্টেশন আপডেট করে এটি স্পষ্ট করা হয়েছে যে এটিFlow-এর একটি এক্সটেনশন পদ্ধতি যাPagingSourceইনস্ট্যান্স তৈরি করার জন্য একটি আবার ব্যবহারযোগ্য ফ্যাক্টরি রিটার্ন করে। (I5ff4f, I705b5)- জাম্পিংয়ের সুবিধা দিতে
itemsBeforeওitemsAfterওভাররাইড করার প্রয়োজনীয়তা স্পষ্ট করতেLoadResult.Pageকনস্ট্রাক্টরের ডকুমেন্টেশন আপডেট করা হয়েছে। (Ied354)
এক্সটার্নাল কন্ট্রিবিউশন
- Android/JVM স্পেসিফিক থেকে পেজিং সরানোর কাজে কন্ট্রিবিউট করার জন্য Veyndan-কে ধন্যবাদ। (#525, #523, #520, #519, #507, #506, #505, #499, #497, #496, #493)
ভার্সন 3.2.0-alpha04
৮ ফেব্রুয়ারি, ২০২৩
androidx.paging:paging-*:3.2.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 3.2.0-alpha04-এ এইসব কমিট আছে।
পেজিং টেস্টিং
paging-testingআর্টিফ্যাক্টে এখন একটিasPagingSourceFactoryপদ্ধতি রয়েছে যার মাধ্যমেFlow<List<Value>>থেকেpagingSourceFactoryতৈরি করে পেজারে পাঠানো যায়। Flow থেকে নির্গত প্রতিটিList<Value>>, Paged ডেটার একটি জেনারেশনকে উপস্থাপন করে। এটি পেজিং টেস্টের সুবিধা দেয়, যেমন, পেজারের সংগ্রহ করার জন্য ডেটা সোর্স নকল করেPagingDataট্রান্সফর্মেশন। (I6f230, b/235528239)paging-testingআর্টিফ্যাক্টকেFlow<PagingData<T>>-এর মধ্যে থাকা ডেটা সঠিক কিনা তা যাচাই করার উপযুক্ত নতুন API-এর মাধ্যমে আরও উন্নত করা হয়েছে। এটি, উদাহরণস্বরূপ, আপনার ViewModel লেয়ার থেকেFlow<PagingData<T>>-এর আউটপুট অ্যাসার্ট করতে ব্যবহার করা যেতে পারে।এটি
asSnapshotKotlin এক্সটেনশন অনFlow<PagingData<Value>>-এর মাধ্যমে করা হয়, যাFlow<PagingData<Value>>-কে সরাসরিList<Value>-এ অনুবাদ করে।asSnapshotল্যাম্বডা আপনাকেscrollToবাappendScrollWhile-এর মতো API-এর মাধ্যমে আপনার অ্যাপের UI-কে এমনভাবে অনুকরণ করতে দেয় যা পুনরাবৃত্তিযোগ্য এবং সামঞ্জস্যপূর্ণ যাতে আপনি আপনার পেজ করা ডেটার সেটের যেকোনো পয়েন্টে ডেটার স্ন্যাপশট সঠিক কিনা তা যাচাই করতে পারেন।// 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 valuesasSnapshotহল একটিsuspendপদ্ধতি যাrunTest-এর মধ্যে চালানো হবে বলে আশা করা হচ্ছে। আরও তথ্যের জন্য Android-এ Kotlin coroutines পরীক্ষা করা দেখুন। (I55fd2, I5bd26, I7ce34, I51f4d, I2249f, Id6223, Ic4bab, Ib29b9, Ic1238, I96def, b/235528239)
API-তে পরিবর্তন
AsyncPagingDataDifferএবংPagingDataAdapter-এgetItemএবংpeek-এর UI কলগুলি এখন সঠিকভাবে শুধুমাত্র মূল থ্রেডে কল করা যায় হিসেবে চিহ্নিত করা হয়েছে। (I699b6)TestPager-এর ব্যবহার করা জেনেরিক ধরনের ওয়াইল্ডকার্ড সরিয়ে দেওয়া হয়েছে, এর ফলে Java প্রোগ্রামিং ল্যাঙ্গোয়েজে লেখা কোডে সেইসব পদ্ধতির ফলাফল ব্যবহার করা সহজ হয়ে গেছে। (I56c42)
ভার্সন 3.2.0-alpha03
২৪ অক্টোবর, ২০২২
androidx.paging:paging-*:3.2.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 3.2.0-alpha03-এ এইসব কমিট রয়েছে।
পেজিং টেস্টিং
এই রিলিজে নতুন আর্টিফ্যাক্ট আছে: paging-testing। এই আর্টিফ্যাক্ট আপনার অ্যাপের প্রতিটি লেয়ারের ইউনিট টেস্টিং এবং আইসোলেশনে পেজিংয়ের সাথে এর ইন্টিগ্রেশনের জন্য ডিজাইন করা API প্রদান করে।
যেমন, এই প্রথম রিলিজে একটি TestPager ক্লাস অন্তর্ভুক্ত আছে যা আপনাকে Pager এবং আসল UI থেকে স্বাধীনভাবে আপনার নিজস্ব কাস্টম PagingSource ইমপ্লিমেন্টেশনের আচরণ যাচাই করতে দেয় যা সাধারণত এন্ড-টু-এন্ড পেজিং ইন্টিগ্রেশন সিমুলেট করার জন্য প্রয়োজন হয়।
TestPager-কে নকল হিসেবে বিবেচনা করা উচিত - এটি টেস্ট ডাবল যা Pager-এর আসল ইমপ্লিমেন্টেশনের মতো কাজ করে, তবে PagingSource পরীক্ষা করার জন্য API সারফেসকে আরও সহজ করে দেয়। এই APIগুলি হল suspend API এবং Android-এ Kotlin coroutines পরীক্ষা করা সংক্রান্ত গাইডে যেমন উল্লেখ করা হয়েছে, সেই অনুযায়ী runTest-এর মধ্যে রান করা উচিত।
এইসব API-এর ব্যবহারের উদাহরণ room-paging টেস্ট-এ পাওয়া যাবে, যা TestPager ব্যবহার করার জন্য রিফ্যাক্টর করা হয়েছে।
API-তে পরিবর্তন
LoadResult.Page.iterator()-এর মাধ্যমেLoadResult.Page.data-এর উপর সুবিধাজনক ইটারেশন চালু করে। এটি পরোক্ষভাবে Kotlin স্ট্যান্ডার্ড লাইব্রেরিflattenপদ্ধতি ব্যবহার করার অনুমতি দেয় যখনList<LoadResult.Page>দেওয়া হয় যেমনPagingState-এরpagesপ্রপার্টি সহ যাPagingSource.getRefreshKeyপদ্ধতিতে পাস করা হয়। (Ie0718)
ভার্সন 3.2.0-alpha02
১০ আগস্ট, ২০২২
androidx.paging:paging-*:3.2.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 3.2.0-alpha02-এ এইসব কমিট রয়েছে।
নতুন ফিচার
PagingDataথেকে সংগ্রহ করা ডিবাগিং তথ্য প্রকাশ করার জন্য পেজিং এখনAsyncPagingDataDifferবাPagingDataAdapterক্লাসের মাধ্যমে লগ প্রদান করে।adb shellকমান্ডের মাধ্যমে লগ চালু করা যেতে পারেadb shell setprop log.tag.Paging [DEBUG|VERBOSE].(b/235527159)
সমস্যার সমাধান
- রানটাইম
paging-runtime:3.1.1বা এর আগের ভার্সনের সাথেpaging-common:3.2.0-alpha01ব্যবহার করার সময়PagingDataDifferকনস্ট্রাক্টর সংক্রান্ত সমস্যার সমাধান করা হয়েছে।(b/235256201)
ভার্সন 3.2.0-alpha01
১ জুন, ২০২২
androidx.paging:paging-*:3.2.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 3.2.0-alpha01-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
PagingDataAdapterওAsyncPagingDataDiffer-এর জন্য কনস্ট্রাক্টর যোগ করা হয়েছে, যাCoroutineDispatcher-এর পরিবর্তেCoroutineContextগ্রহণ করে। (Idc878)- ডিফল্ট হিসেবে,
PagingData.from()এবংPagingData.empty()আর উপস্থাপকের দিক থেকেCombinedLoadStates-কে প্রভাবিত করবে না।sourceLoadStatesএবংremoteLoadStates-কে এই কনস্ট্রাক্টরগুলিতে পাস করার অনুমতি দেয় এমন একটি নতুন ওভারলোড যোগ করা হয়েছে যাতেLoadStates-কে সম্পূর্ণ টার্মিনাল (অর্থাৎ,NotLoading(endOfPaginationReached = false)) বিকল্প সহ, প্রয়োজন হলে রিমোট স্টেটও অন্তর্ভুক্ত করার বিকল্প।LoadStatesপাস না হলে, স্ট্যাটিকPagingDataপাওয়ার সময় প্রেজেন্টারের দিকে আগেরCombinedLoadStatesবজায় রাখা হবে। (Ic3ce5, b/205344028)
সমস্যার সমাধান
PagingSource.getRefreshKey()-এর ফলাফল এখনinitialKey-এর চেয়ে সঠিকভাবে বেশি অগ্রাধিকার পায়, যেখানে এটি নাল রিটার্ন করে, কিন্তু নন-নালinitialKeyসেট করা হয়। (Ic9542, b/230391606)
এক্সটার্নাল কন্ট্রিবিউশন
- test-coroutines-lib মাইগ্রেশনের (I3366d) কারণে :compose:ui:ui-test api (updateApi) আপডেট করা হয়েছে
ভার্সন ৩.১
ভার্সন 3.1.1
৯ মার্চ, ২০২২
androidx.paging:paging-*:3.1.1 রিলিজ করা হয়েছে। ভার্সন 3.1.1-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
.cachedIn()-এর মাধ্যমে ভুলভাবে যোগ করা জেনারেশনের মধ্যে থাকা মধ্যবর্তীLoadState.NotLoadingইভেন্ট সরিয়ে দেওয়া হয়েছে। এই পরিবর্তনের ফলে, রিফ্রেশ করার সময় বা বাতিল করার সময়, লোড করার প্রসেস আবার চেষ্টা করার মধ্যে তৈরি হওয়া অতিরিক্তLoadState.NotLoadingইভেন্ট সরিয়ে দিয়েLoadStateপরিবর্তনের উপর প্রতিক্রিয়া জানানো অনেক সহজ হয়ে যায়।
ভার্সন 3.1.0
১৭ নভেম্বর, ২০২১
androidx.paging:paging-*:3.1.0 রিলিজ করা হয়েছে। ভার্সন 3.1.0-এ এইসব কমিট রয়েছে।
3.0.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন
Flow<PagingData>.observableএবংFlow<PagingData>.flowableAPI আর পরীক্ষামূলক পর্যায়ে নেইLoadState-এ আচরণগত পরিবর্তন:PagingSourceওRemoteMediator, দুটির ক্ষেত্রেইLoadType.REFRESH-এর জন্যendOfPaginationReachedএখন সবসময়false- পেজিং থেকে
LoadStatesএখন ডাউনস্ট্রিমে এমিট করার আগেPagingSourceএবংRemoteMediatorউভয়ের কাছ থেকে সঠিক ভ্যালুর জন্য অপেক্ষা করছে।PagingData-এর নতুন জেনারেশন এখন থেকে রিফ্রেশ স্টেট-এর জন্য সবসময় সঠিকভাবেLoadingদিয়ে শুরু হবে, কিছু ক্ষেত্রে ভুলভাবেNotLoading-এ রিসেট হবে না। - প্রেজেন্টার API-তে
.loadStateFlowএবং.addLoadStateListenerআর অপ্রয়োজনীয়ভাবে প্রাথমিকCombinedLoadStatesপাঠায় না, যেখানে সবসময় মধ্যস্থতাকারী স্ট্যাটাসnullহিসেবে সেট করা থাকে
- পুরনো জেনারেশন বাতিল করার প্রসেস এখন বাতিলকরণ / নতুন জেনারেশনের ক্ষেত্রে দ্রুত হয়।
Flow<PagingData>-এ.collectLatestব্যবহার করার আর প্রয়োজন হবে না, যদিও এটি এখনও করার জন্য সাজেস্ট করা হয়। PagingSource.LoadResult.Invalid-কেPagingSource.loadথেকে নতুন রিটার্ন টাইপ হিসেবে যোগ করা হয়েছে, যার ফলে পেজিং এইPagingSource-এ যেকোনও পেন্ডিং বা ভবিষ্যতের লোড অনুরোধ বাতিল করে দেয় এবং এটিকে অবৈধ করে দেয়। এই রিটার্ন টাইপটি সম্ভাব্য ভুল বা পুরনো ডেটা ম্যানেজ করার জন্য ডিজাইন করা হয়েছে যা ডেটাবেস বা নেটওয়ার্ক থেকে রিটার্ন করা যেতে পারে।.onPagesPresentedও.addOnPagesUpdatedListenerপ্রেজেন্টার API যোগ করা হয়েছে, যা UI-তে পৃষ্ঠা দেখানোর সময় সিঙ্ক্রোনাসভাবে ট্রিগার হয়। নিম্নলিখিত পরিস্থিতিতে পৃষ্ঠা আপডেট হতে পারে:- নতুন প্রজন্মের PagingData-এর প্রাথমিক লোড সম্পূর্ণ হয়, নতুন প্রজন্মের আইটেমে কোনও পরিবর্তন থাকুক বা না থাকুক। অর্থাৎ, কোনও আপডেট ছাড়াই প্রাথমিক লোড সম্পূর্ণ করা একটি নতুন জেনারেশন এখনও এই কলব্যাক ট্রিগার করবে কারণ তালিকাটি ঠিক একই রকম।
- পৃষ্ঠা যোগ করা হয়েছে, এমনকি যোগ করা পৃষ্ঠায় কোনও নতুন আইটেম না থাকলেও।
- ড্রপ করা পৃষ্ঠাটি খালি থাকলেও, একটি পৃষ্ঠা ড্রপ করা হয়।
ভার্সন 3.1.0-rc01
৩ নভেম্বর, ২০২১
androidx.paging:paging-*:3.1.0-rc01 রিলিজ করা হয়েছে। ভার্সন 3.1.0-rc01-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- .cachedIn()-এ রেস কন্ডিশন + মেমরি লিক সংক্রান্ত সমস্যার সমাধান করা হয়েছে। এটি এমন ক্ষেত্রে হয় যেখানে কোনও পর্যবেক্ষক না থাকলে বা কোনও পর্যবেক্ষক নতুন PagingData-তে পরিবর্তন করার সময় পেজিং ডাউনস্ট্রিমের মাধ্যমে একাধিক লোড ইভেন্ট পাঠানো হয়। (Ib682e)
ভার্সন 3.1.0-beta01
১৩ অক্টোবর, ২০২১
androidx.paging:paging-*:3.1.0-beta01 রিলিজ করা হয়েছে। ভার্সন 3.1.0-beta01-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- অনেক আইটেম দ্রুত অ্যাক্সেস করার ফলে prefetchDistance-এ বিবেচনা করার জন্য সেগুলি বাদ পড়ে যেতে পারে, যার ফলে পৃষ্ঠা লোড হতে দেরি হতে পারে। এই সমস্যার সমাধান করা হয়েছে। এটি বিশেষ করে তখন সমস্যা হয় যখন অনেক আইটেম এমনভাবে সাজানো হয় যে ব্যবহারকারীর স্ক্রল করার দিকের বিপরীতে লোড করার বিষয়টি অগ্রাধিকার পায়। এইসব আইটেম অ্যাক্সেস এখন বাফার করা হয়েছে এবং ড্রপ হওয়া থেকে আটকাতে সিঙ্ক্রোনাসভাবে অগ্রাধিকার দেওয়া হয়েছে। (aosp/1833273)
ভার্সন 3.1.0-alpha04
২৯ সেপ্টেম্বর, ২০২১
androidx.paging:paging-*:3.1.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 3.1.0-alpha04-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
Flow<PagingData>.observableএবংFlow<PagingData>.flowableAPI আর পরীক্ষামূলক নয়। (Ie0bdd)
সমস্যার সমাধান
- LoadStates-এর জন্য,
endOfPaginationReachedএখন সবসময়falseLoadType.REFRESH-এর জন্য। আগে, RemoteMediatorREFRESH-এর জন্য endOfPaginationReachedtrueহতে পারত, কিন্তু PagingSource-এর জন্য নয়। এই আচরণটি এখন একত্রিত করা হয়েছে যাতে সর্বদাfalseরিটার্ন করে কারণ REFRESH-এর টার্মিনাল হওয়ার কোনও অর্থ হয় না এবং এখন LoadStates-এ API চুক্তির অংশ হিসাবে ডকুমেন্ট করা হয়েছে। পৃষ্ঠা সংখ্যা শেষ হয়েছে কিনা তা নির্ধারণ করার সময়, আপনাকে সবসময় APPEND বা PREPEND ডিরেকশন অনুযায়ী তা করতে হবে। (I047b6) Paging থেকে LoadStates এখন জেনারেশনের মধ্যে ডাউনস্ট্রিম এমিট করার আগে PagingSource এবং RemoteMediator, উভয়ের থেকেই সঠিক ভ্যালুর জন্য অপেক্ষা করে। এটি CombinedLoadStates.source.refresh-এ নতুন প্রজন্মের PagingData থেকে NotLoading পাঠানো আটকায়, যদি এটি আগে থেকেই Loading থাকে; নতুন প্রজন্মের PagingData এখন সবসময় সঠিকভাবে Loading দিয়ে শুরু হবে, পরিবর্তে কিছু ক্ষেত্রে ভুলভাবে NotLoading-এ রিসেট করা হবে না।
Cancellation on past generations now happen eagerly on invalidation / new generations.
Flow<PagingData>-এ .collectLatest ব্যবহার করার আর প্রয়োজন নেই, যদিও এটি করার জন্য এখনও অত্যন্ত বেশি করে সাজেস্ট করা হয়। (I0b2b5, b/177351336, b/195028524)প্রেজেন্টার API-তে
.loadStateFlowও.addLoadStateListenerপ্রাথমিকCombinedLoadStatesআর অপ্রয়োজনীয়ভাবে পাঠায় না, যেটিতে সবসময় মিডিয়েটর স্টেটnullও সোর্স স্টেটNotLoading(endOfPaginationReached = false)সেট করা থাকে। এর অর্থ হল:- আপনি RemoteMediator ব্যবহার করলে, মধ্যস্থতাকারীর স্ট্যাটাস সবসময় পপুলেট করা হবে।
-
.loadStateFlow-এ নতুন loadState লিসনার বা নতুন কালেক্টর রেজিস্টার করলে,PagingDataথেকে কোনও আসলCombinedLoadStatesনা পেলে আর সঙ্গে সঙ্গে বর্তমান ভ্যালু ইমিট করবে না।PagingDataজমা দেওয়ার আগে কোনও কালেক্টর বা লিসেনার শুরু করলে এটি হতে পারে। (I1a748)
ভার্সন 3.1.0-alpha03
২১ জুলাই, ২০২১
androidx.paging:paging-*:3.1.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 3.1.0-alpha03-এ এইসব কমিট আছে।
API-তে পরিবর্তন
PagingSource-এ তৃতীয় LoadResult রিটার্ন টাইপ LoadResult.Invalid যোগ করা হয়েছে। PagingSource.load, LoadResult.Invalid রিটার্ন করলে, পেজিং লোড করা ডেটা বাতিল করে দেবে এবং PagingSource-কে অবৈধ করে দেবে। এই রিটার্ন টাইপটি ডেটাবেস বা নেটওয়ার্ক থেকে ফেরত আসতে পারে এমন সম্ভাব্য ভুল বা বাসি ডেটা ম্যানেজ করার জন্য ডিজাইন করা হয়েছে।
যেমন, যদি অন্তর্নিহিত ডেটাবেসে লেখা হয় কিন্তু PagingSource সময়মতো বাতিল না হয়, তাহলে এটি অসামঞ্জস্যপূর্ণ ফলাফল দেখাতে পারে যদি এর প্রয়োগ যে ব্যাকিং ডেটাসেট থেকে এটি লোড করে তার অপরিবর্তনীয়তার উপর নির্ভর করে (যেমন, LIMIT OFFSET স্টাইল db প্রয়োগ)। এই পরিস্থিতিতে, লোড করার পরে বাতিল করা হয়েছে কিনা তা চেক করে LoadResult.Invalid রিটার্ন করার জন্য সাজেস্ট করা হয়, এর ফলে এই PagingSource-এ কোনও বাকি থাকা বা ভবিষ্যতের লোড করার অনুরোধ বাতিল করে দেওয়া হয়।
এই রিটার্ন টাইপ Paging2 API-তেও কাজ করে যা LivePagedList বা RxPagedList-এর সুবিধা নেয়। Paging2-এর PagedList API-এর সাথে PagingSource ব্যবহার করার সময়, PagedList অবিলম্বে আলাদা করা হয়, এই PagedList-এ ডেটা লোড করার পরবর্তী প্রচেষ্টা বন্ধ করে দেয় এবং PagingSource-এ বাতিল করার প্রসেস ট্রিগার করে।
LoadResult হল একটি সিল করা ক্লাস, যার অর্থ হল এটি একটি সোর্স-ইনকম্প্যাটিবল পরিবর্তন, যার ফলে সরাসরি PagingSource.load ফলাফল ব্যবহার করা ইউজ কেসগুলিকে কম্পাইল টাইমে LoadResult.Invalid হ্যান্ডেল করতে হবে। যেমন, Kotlin ব্যবহারকারীরা রিটার্ন টাইপ চেক করার জন্য exhaustive-when ব্যবহার করলে, তাদের Invalid টাইপের জন্য একটি চেক যোগ করতে হবে। (Id6bd3, b/191806126, b/192013267)
সমস্যার সমাধান
- PagingSource.registerInvalidatedCallback বা DataSource.addInvalidatedCallback-এর মাধ্যমে যোগ করা ইনভ্যালিডেশন কলব্যাক এখন অটোমেটিক ট্রিগার হয় যদি সেগুলি এমন PagingSource / DataSource-এ রেজিস্টার করা থাকে যা আগে থেকেই ইনভ্যালিড। এটি রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করে যার ফলে পেজিং ইনভ্যালিডেশন সিগন্যাল ড্রপ করে এবং প্রাথমিক লোডের সময় আগে থেকেই ইনভ্যালিড সোর্স প্রদান করা হলে আটকে যায়। এছাড়াও, ইনভ্যালিডেট কলব্যাক ট্রিগার হওয়ার পরে এখন সঠিকভাবে সরিয়ে দেওয়া হয় কারণ এগুলি সর্বাধিক একবার কল করার গ্যারান্টি দেওয়া হয়। (I27e69)
- নতুন ইনস্ট্যান্টিয়েটেড PagedList স্ট্রিম, যেমন LivePagedListBuilder বা RxPagedListBuilder থেকে প্লেসহোল্ডার প্রাথমিক ভ্যালু (InitialPagedList) জমা দিলে, আগে লোড করা ডেটা আর মুছে যাবে না।
ভার্সন 3.1.0-alpha02
১ জুলাই, ২০২১
androidx.paging:paging-*:3.1.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 3.1.0-alpha02-এ এইসব কমিট রয়েছে।
নতুন ফিচার
onPagesPresented লিসেনার ও ফ্লো প্রেজেন্টার API যোগ করা হয়েছে যা UI-তে প্রেজেন্ট করা পৃষ্ঠা আপডেট হওয়ার সাথে সাথেই ট্রিগার হয়।
এইসব আপডেট UI-এর সাথে সিঙ্ক করা হয় বলে, আপডেট প্রয়োগ করার পরে স্ট্যাটাস চেক করতে আপনি .snapshot, .getItemCount-এর মতো অ্যাডাপ্টার মেথড কল করতে পারেন। মনে রাখবেন যে .snapshot() স্পষ্টভাবে কল করার জন্য বাকি ছিল কারণ প্রতিটি আপডেটে এটি করা ব্যয়বহুল হতে পারে।
নিম্নলিখিত পরিস্থিতিতে পৃষ্ঠা আপডেট করা হতে পারে:
- নতুন জেনারেশনের PagingData-এর প্রাথমিক লোড সম্পূর্ণ হয়, নতুন জেনারেশনে উপস্থাপিত আইটেমে কোনও পরিবর্তন থাকুক বা না থাকুক। অর্থাৎ, নতুন জেনারেশন প্রাথমিক লোড সম্পূর্ণ করছে কোনও আপডেট ছাড়াই কারণ তালিকাটি ঠিক একই রকম থাকবে এই কলব্যাক ট্রিগার করুন।
- একটি পৃষ্ঠা যোগ করা হয়েছে, যদিও যোগ করা পৃষ্ঠায় কোনও নতুন আইটেম নেই
- কোনও পৃষ্ঠা বাদ দেওয়া হয়েছে, এমনকি বাদ দেওয়া পৃষ্ঠাটি খালি থাকলেও (I272c9, b/189999634)
সমস্যার সমাধান
- LivePagedList বা RxPagedList-এর মাধ্যমে তৈরি করা প্রাথমিক ভ্যালু থেকে PagedList.dataSource অ্যাক্সেস করলে, IllegalStateException (I96707) আর ভুল করে থ্রো করা হবে না
ভার্সন 3.1.0-alpha01
২ জুন, ২০২১
androidx.paging:paging-*:3.1.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 3.1.0-alpha01-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
paging-rxjava3-এর প্রদান করা ক্লাস এখনandroidx.paging.rxjava3প্যাকেজের অধীনে থাকে যাতে সেগুলিpaging-rxjava2-এর সাথে কনফ্লিক্ট না করে (Ifa7f6)
সমস্যার সমাধান
- পেজিং কখনও কখনও RecyclerView-তে নো-অপ ডিফার ইভেন্ট পাঠাত, যার ফলে নির্দিষ্ট কিছু লিসেনার তাড়াতাড়ি ট্রিগার হতে পারত। এই সমস্যার সমাধান করা হয়েছে। (Ic507f, b/182510751)
এক্সটার্নাল কন্ট্রিবিউশন
- rxjava3 আর্টিফ্যাক্টে অবচিত PagedList compat API যোগ করা হয়েছে (Id1ce2, b/182497591)
Paging Compose ভার্সন 1.0.0
ভার্সন 1.0.0-alpha20
২৪ মে, ২০২৩
androidx.paging:paging-compose:1.0.0-alpha20 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha20-এ এইসব কমিট আছে।
নতুন ফিচার
- 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)
Version 1.0.0-alpha19
৩ মে, ২০২৩
androidx.paging:paging-compose:1.0.0-alpha19 রিলিজ করা হয়েছে। 1.0.0-alpha19 ভার্সনে এইসব কমিট আছে।
সব লেজি লেআউট কাজ করে
আগে, পেজিং কম্পোজ LazyListScope-এ কাস্টম items ও itemsIndexed এক্সটেনশন প্রদান করত, যার অর্থ হল আপনি LazyVerticalGrid, HorizontalPager বা Wear ও TV লাইব্রেরি দ্বারা প্রদান করা অন্যান্য কাস্টম লেজি কম্পোনেন্টের মতো অন্যান্য লেজি লেআউটের সাথে পেজিং কম্পোজ ব্যবহার করতে পারবেন না। এই রিলিজের প্রাথমিক আপডেট হল এই অনমনীয়তার সমাধান করা।
আরও বেশি লেজি লেআউট সাপোর্ট করার জন্য, আমাদের আলাদা লেয়ারে API তৈরি করতে হয়েছে - প্রতিটি লেজি লেআউটের জন্য কাস্টম items API দেওয়ার পরিবর্তে, পেজিং কম্পোজ এখন itemKey ও itemContentType-এ LazyPagingItems-এর উপর সামান্য কম লেভেলের এক্সটেনশন পদ্ধতি প্রদান করে। এইসব API-এর মূল লক্ষ্য হল, LazyColumn, LazyVerticalGrid-এর জন্য আগে থেকেই উপলভ্য স্ট্যান্ডার্ড items API-তে key ও contentType প্যারামিটার প্রয়োগ করতে আপনাকে সাহায্য করা। এর পাশাপাশি, HorizontalPager-এর মতো API-তে সমতুল্য প্যারামিটার প্রয়োগ করতেও সাহায্য করা হয়। (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 উদাহরণগুলিকে কয়েক লাইন দীর্ঘ করে তুললেও, আমরা অনুভব করেছি যে সমস্ত লেজি লেআউট জুড়ে ধারাবাহিকতা বজায় রাখা পেজিং কম্পোজ ব্যবহারকারীদের জন্য একটি গুরুত্বপূর্ণ বিষয়। সেই কারণে, LazyListScope-এর বর্তমান এক্সটেনশন এখন বন্ধ করে দেওয়া হয়েছে। (I0c459, I92c8f, b/276989796)
API-তে পরিবর্তন
- নতুন API-তে মাইগ্রেশন সহজ করতে,
LazyListScope-এitemsওitemsIndexedএক্সটেনশন ফাংশন এখনcontentTypeপ্যারামিটার ব্যবহার করতে পারে, যা নতুন API-তে কাজ করে। (Ib1918, b/255283378)
নির্ভরতা সংক্রান্ত আপডেট
- পেজিং কম্পোজ, কম্পোজ ১.০.৫ থেকে কম্পোজ ১.২.১-এ এর ডিপেন্ডেন্সি আপডেট করেছে। (Ib1918, b/255283378)
Version 1.0.0-alpha18
৮ ফেব্রুয়ারি, ২০২৩
androidx.paging:paging-compose:1.0.0-alpha18 কোনও পরিবর্তন ছাড়াই রিলিজ করা হয়েছে। 1.0.0-alpha18 ভার্সনে এইসব কমিট রয়েছে।
Version 1.0.0-alpha17
২৪ অক্টোবর, ২০২২
androidx.paging:paging-compose:1.0.0-alpha17 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha17-এ এইসব কমিট রয়েছে।
নতুন ফিচার
CoroutineContextকল করার সময়collectLazyPagingItemsকাস্টমাইজ করার সুবিধা যোগ করুন। (I7a574, b/243182795, b/233783862)
ভার্সন 1.0.0-alpha16
১০ আগস্ট, ২০২২
androidx.paging:paging-compose:1.0.0-alpha16 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha16-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- PagingData থেকে সংগ্রহ করা ডিবাগিং তথ্য প্রকাশ করার জন্য পেজিং এখন
LazyPagingItemsক্লাসের মাধ্যমে লগ প্রদান করে। adb shellকমান্ডadb shell setprop log.tag.Paging [DEBUG|VERBOSE]-এর মাধ্যমে লগ চালু করা যেতে পারে। ([b/235527159}(https://issuetracker.google.com/issues/235527159))
সমস্যার সমাধান
paging-common:3.1.1বা তার আগের ভার্সনের সাথেpaging-compose:1.0.0-alpha15ব্যবহার করার সময়PagingDataDifferকনস্ট্রাক্টর সংক্রান্ত সমস্যার সমাধান করা হয়েছে।(b/235256201,b/239868768)
Version 1.0.0-alpha15
১ জুন, ২০২২
androidx.paging:paging-compose:1.0.0-alpha15 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha15-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
PagingDataAdapterওAsyncPagingDataDiffer-এর জন্য কনস্ট্রাক্টর যোগ করা হয়েছে, যাCoroutineDispatcher-এর পরিবর্তেCoroutineContextগ্রহণ করে। (Idc878)
সমস্যার সমাধান
LazyPagingItemsএখন প্রাথমিকloadStateসেট করে যাতেLoadState.Loadingরিফ্রেশ করা যায়। (I55043, b/224855902)
ভার্সন 1.0.0-alpha14
১৩ অক্টোবর, ২০২১
androidx.paging:paging-compose:1.0.0-alpha14 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha14-এ এইসব কমিট রয়েছে।
Version 1.0.0-alpha13
২৯ সেপ্টেম্বর, ২০২১
androidx.paging:paging-compose:1.0.0-alpha13 রিলিজ করা হয়েছে। 1.0.0-alpha13 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
LazyPagingItems.snapshot()ফাংশন পরিবর্তন করেLazyPagingItems.itemSnapshotListপ্রপার্টি করা হয়েছে (Ie2da8)- বন্ধ করে দেওয়া
LazyPagingItems.getAsState()সরিয়ে দেওয়া হয়েছে (Ie65e4)
ভার্সন 1.0.0-alpha12
২১ জুলাই, ২০২১
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)
Version 1.0.0-alpha11
৩০ জুন, ২০২১
androidx.paging:paging-compose:1.0.0-alpha11 রিলিজ করা হয়েছে। 1.0.0-alpha11 ভার্সনে এই কমিটগুলি রয়েছে।
ভার্সন 1.0.0-alpha10
২ জুন, ২০২১
androidx.paging:paging-compose:1.0.0-alpha10 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha10-এ এইসব কমিট রয়েছে।
ভার্সন 1.0.0-alpha09
১৮ মে, ২০২১
androidx.paging:paging-compose:1.0.0-alpha09 রিলিজ করা হয়েছে। 1.0.0-alpha09 ভার্সনে এই কমিটগুলি রয়েছে।
সমস্যার সমাধান
- LazyPagingItems-এর itemCount এবং আইটেম গেটার এখন পর্যবেক্ষণযোগ্য যা এটিকে LazyVerticalGrid-এর সাথেও ব্যবহার করার অনুমতি দেয় (Ie2446, b/171872064, b/168285687)
কম্পোজ করা সংক্রান্ত মানানসই
androidx.paging:paging-compose:1.0.0-alpha09শুধুমাত্র Compose ভার্সন1.0.0-beta07ও তার পরবর্তী ভার্সনের সাথে মানানসই।
ভার্সন 1.0.0-alpha08
২৪ ফেব্রুয়ারি, ২০২১
androidx.paging:paging-compose:1.0.0-alpha08 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha08-এ এইসব কমিট রয়েছে।
Compose 1.0.0-beta01-এর সাথে ইন্টিগ্রেট করার জন্য আপডেট করা হয়েছে।
Version 1.0.0-alpha07
১০ ফেব্রুয়ারি, ২০২১
androidx.paging:paging-compose:1.0.0-alpha07 রিলিজ করা হয়েছে। 1.0.0-alpha07 ভার্সনে এইসব কমিট আছে।
Compose alpha12-এর সাথে ইন্টিগ্রেট করার জন্য আপডেট করা হয়েছে।
ভার্সন 1.0.0-alpha06
২৮ জানুয়ারি, ২০২১
androidx.paging:paging-compose:1.0.0-alpha06 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha06-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
Compose 1.0.0-alpha11-এর উপর নির্ভর করে আপডেট করা হয়েছে।
Version 1.0.0-alpha05
১৩ জানুয়ারি, ২০২১
androidx.paging:paging-compose:1.0.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha05-এ এইসব কমিট রয়েছে।
Compose 1.0.0-alpha10-এর উপর নির্ভর করার জন্য আপডেট করা হয়েছে।
Version 1.0.0-alpha04
১৬ ডিসেম্বর, ২০২০
androidx.paging:paging-compose:1.0.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha04-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- সুবিধাজনক প্রপার্টি আপডেট করা হয়েছে,
CombinedLoadStates.refresh,CombinedLoadStates.prepend,CombinedLoadStates.appendশুধুমাত্রLoadingথেকেNotLoading-এ ট্রানজিশন করতে মিডিয়েটর ও সোর্স লোড স্টেট, দুটিইNotLoadingহওয়ার পরে যাতে রিমোট আপডেট প্রয়োগ করা হয়েছে তা নিশ্চিত করা যায়। (I65619)
ভার্সন 1.0.0-alpha03
২ ডিসেম্বর, ২০২০
androidx.paging:paging-compose:1.0.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha03-এ এইসব কমিট রয়েছে।
- Compose 1.0.0-alpha08-এর সাথে ম্যাচ করার জন্য আপডেট করা হয়েছে।
ভার্সন 1.0.0-alpha02
১১ নভেম্বর ২০২০
androidx.paging:paging-compose:1.0.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha02-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
LazyPagingItem-এ.peek(),.snapshot(),.retry()ও.refresh()পদ্ধতি যোগ করা হয়েছে, যাAsyncPagingDataDiffer/PagingDataAdapter-এ (Iddfe8, b/172041660) উপলভ্য একই কার্যকারিতা প্রকাশ করে
Version 1.0.0-alpha01
২৮ অক্টোবর, ২০২০
androidx.paging:paging-compose:1.0.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha01-এ এইসব কমিট রয়েছে।
নতুন ফিচার
paging-compose আর্টিফ্যাক্ট পেজিং লাইব্রেরি ও Jetpack Compose-এর মধ্যে ইন্টিগ্রেশন প্রদান করে। ব্যবহারের একটি সহজ উদাহরণ:
@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
২১ জুলাই, ২০২১
androidx.paging:paging-*:3.0.1 রিলিজ করা হয়েছে। ভার্সন 3.0.1-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
LivePagedListবাRxPagedList-এর মাধ্যমে তৈরি করা প্রাথমিক ভ্যালু থেকেPagedList.dataSourceঅ্যাক্সেস করার সময় আর ভুল করে IllegalStateException (I96707) দেখাবে না
ভার্সন 3.0.0
ভার্সন 3.0.0
৫ মে, ২০২১
androidx.paging:paging-*:3.0.0 রিলিজ করা হয়েছে। ভার্সন 3.0.0-এ এইসব কমিট আছে।
3.0.0-এর প্রধান ফিচার
Paging 2.x.x-এর বেশিরভাগ API-এর ব্যবহার বন্ধ করে দেওয়া হয়েছে এবং তার পরিবর্তে নতুন Paging 3 API ব্যবহার করা হচ্ছে যাতে নিম্নলিখিত উন্নতি করা যায়:
- Kotlin coroutines ও Flow-এর জন্য ফার্স্ট-ক্লাস সহায়তা
- বাতিল করার ব্যাপারে সহায়তা
- বিল্ট-ইন লোড স্টেট ও সমস্যা সংক্রান্ত সিগন্যাল
- আবার চেষ্টা করুন + রিফ্রেশ করার কার্যকারিতা
- তিনটি DataSource সাবক্লাসকে একত্রিত করে একটি PagingSource ক্লাস তৈরি করা হয়েছে
- বিভাজক যোগ করার জন্য বিল্ট-ইন সহ কাস্টম পৃষ্ঠা ট্রান্সফর্মেশন
- হেডার ও ফুটার লোড করার স্টেট
ভার্সন 3.0.0-rc01
২১ এপ্রিল, ২০২১
androidx.paging:paging-*:3.0.0-rc01 রিলিজ করা হয়েছে। ভার্সন 3.0.0-rc01-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- Paging কখনও কখনও RecyclerView-এ no-op differ ইভেন্ট পাঠাত, যার ফলে নির্দিষ্ট কিছু লিসনার আগেভাগে ট্রিগার হয়ে যেত, এই সমস্যাটি সমাধান করা হয়েছে। (Ic507f, b/182510751)
ভার্সন 3.0.0-beta03
২৪ মার্চ, ২০২১
androidx.paging:paging-*:3.0.0-beta03 রিলিজ করা হয়েছে। ভার্সন 3.0.0-beta03-এ এইসব কমিট আছে।
সমস্যার সমাধান
- RecyclerView-তে অপ্রত্যাশিত জাম্পিং আটকাতে, তালিকা আবার লোড করার সময় প্লেসহোল্ডার কীভাবে ম্যানেজ করা হয় তা আমরা নতুন করে সাজিয়েছি। আরও বিবরণের জন্য NullPaddedDiffing.md দেখুন। (If1490, b/170027529, b/177338149)
.build()কল করা হলে, বিভিন্ন PagedList বিল্ডার (পুরনো কম্প্যাটিবিলিটি পাথ) আর ভুলভাবে সিঙ্ক্রোনাস পদ্ধতিতে Main থ্রেডেDataSource.Factory.create()কল করে না। (b/182798948)
ভার্সন 3.0.0-beta02
১০ মার্চ, ২০২১
androidx.paging:paging-*:3.0.0-beta02 রিলিজ করা হয়েছে। ভার্সন 3.0.0-beta02-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- Rx3 এক্সটেনশন এখন সঠিকভাবে
@ExperimentalCoroutinesApiঅপ্ট-ইন করার প্রয়োজনীয়তা প্রচার করে। আগে সেগুলি@getপদ্ধতিতে চিহ্নিত করা হত, যা Kotlin Compiler উপেক্ষা করে, কারণ: https://youtrack.jetbrains.com/issue/KT-45227 (I5733c)
সমস্যার সমাধান
- এক্সপেরিমেন্টাল API-এর পাবলিক ব্যবহারের উপর বিধিনিষেধ আরোপ করুন (I6aa29, b/174531520)
- রিমোট রিফ্রেশ কল করা হলে,
PagingStateসবসময়nullহওয়ার কারণ সম্পর্কিত সমস্যার সমাধান করা হয়েছে। - PagingSource-এর মাধ্যমে খালি পৃষ্ঠা রিটার্ন করা হলে,
prefetchDistanceপূরণ করার জন্য Paging আবার ডেটা ফেচ করতে পারে না, এর ফলে Paging "আটকে" যায়, এই সমস্যার সমাধান করা হয়েছে।
ভার্সন 3.0.0-beta01
১০ ফেব্রুয়ারি, ২০২১
androidx.paging:paging-*:3.0.0-beta01 রিলিজ করা হয়েছে। ভার্সন 3.0.0-beta01-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- Rx2 এবং Rx3 র্যাপার এখন এক্সপেরিমেন্টাল অ্যানোটেশন প্রকাশ করে যা
নির্ভর করে। আপনি paging-rxjava2 বা paging-rxjava3-তে Rx কম্প্যাট র্যাপার ব্যবহার করলে, আপনাকে এখন
@OptIn(ExperimentalCoroutinesApi::class)(Ib1f9d) ব্যবহার করে অ্যানোটেট করতে হবে
সমস্যার সমাধান
- কম্প্যাটিবিলিটি পাথের মাধ্যমে v2
DataSourceAPI ব্যবহার করার সময়IndexOutOfBoundsException: Inconsistency detectedকখনও কখনও থ্রো করা হয়, তা সমাধান করা হয়েছে - কম্প্যাটিবিলিটি পাথের মাধ্যমে ব্যবহার করা হলে,
DataSource-এর ইনিশিয়ালাইজেশনের সময়isInvalidকল এখন মূল থ্রেডের পরিবর্তে fetchDispatcher-এ সঠিকভাবে লঞ্চ করা হয়। এটি Room-এরPagingSourceইমপ্লিমেন্টেশন ব্যবহার করার সময় প্রধান থ্রেডে Db অ্যাক্সেসের কারণে হওয়াIllegalStateExceptionসমস্যার সমাধান করে।
Version 3.0.0-alpha13
২৭ জানুয়ারি, ২০২১
androidx.paging:paging-*:3.0.0-alpha13 রিলিজ করা হয়েছে। ভার্সন 3.0.0-alpha13-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
PagingSource.getRefreshKeyপ্রয়োগ করা আর ঐচ্ছিক নয়, এটি এখন ডিফল্ট প্রয়োগ ছাড়াই একটি অ্যাবস্ট্রাক্ট ফাংশন। মাইগ্রেট করা ব্যবহারকারীরা হয় ডিফল্ট ইমপ্লিমেন্টেশন রিটার্ন করা চালিয়ে যেতে পারেন, যা শুধুnullরিটার্ন করে, কিন্তুgetRefreshKey()-এর বাস্তবিক ইমপ্লিমেন্টেশন থাকা উচিত যা ব্যবহারকারীর বর্তমান স্ক্রল পজিশনের উপর ভিত্তি করে একটি কী রিটার্ন করে যাPagingState.anchorPosition-এর মাধ্যমে ভিউপোর্টের আশেপাশে কেন্দ্র করে লোড করা চালিয়ে যেতে দেয়, যদি সম্ভব হয়। (I4339a)InvalidatingPagingSourceFactoryএখন একটি ফাইনাল ক্লাস (Ia3b0a)- অতিরিক্ত ঐচ্ছিক SeparatorType প্যারামিটার সহ টার্মিনাল সেপারেটর (হেডার / ফুটার)
ব্যবহার কনফিগার করার অনুমতি দিন। দুটি
বিকল্প হল:
FULLY_COMPLETE- আগে থেকে থাকা আচরণ; PagingSource এবং RemoteMediator, দু'টিকেই endOfPaginationReached হিসেবে চিহ্নিত করার জন্য অপেক্ষা করুন, তারপরই টার্মিনাল সেপারেটর যোগ করুন। RemoteMediator ব্যবহার না করা হলে, রিমোট loadState উপেক্ষা করা হয়। এটি মূলত তখনই উপযোগী যখন আপনি শুধুমাত্র বিভাগ দেখাতে চান বিভাগটি সম্পূর্ণরূপে লোড হয়ে গেলে বিভাজক, রিমোট সোর্স থেকে আনা সহ যেমন, নেটওয়ার্ক।SOURCE_COMPLETE- RemoteMediator ব্যবহার করা হলেও, endOfPaginationReached চিহ্নিত করার জন্য শুধুমাত্র PagingSource-এর জন্য অপেক্ষা করুন। এর ফলে প্রাথমিক লোডের সাথে হেডার ও ফুটার সিঙ্ক্রোনাইজ করে দেখানো যায়, যার ফলে ব্যবহারকারীকে টার্মিনাল সেপারেটর দেখার জন্য স্ক্রল করতে হয় না। (Ibe993, b/174700218)
সমস্যার সমাধান
- বিরল মেমরি লিক সংক্রান্ত সমস্যার সমাধান করা হয়েছে। PageFetcher, PagingSource থেকে লোড করা শুরু করার আগেই সেটি ইনভ্যালিডেট হয়ে গেলে এই সমস্যা হয়। (I9606b, b/174625633)
ভার্সন 3.0.0-alpha12
১৩ জানুয়ারি, ২০২১
androidx.paging:paging-*:3.0.0-alpha12 রিলিজ করা হয়েছে। ভার্সন 3.0.0-alpha12-এ এইসব কমিট আছে।
API-তে পরিবর্তন
- InvalidatingPagingSourceFactory আর অ্যাবস্ট্রাক্ট ক্লাস নয় কারণ এতে কখনও কোনও অ্যাবস্ট্রাক্ট পদ্ধতি ছিল না। (I4a8c4)
- Java ব্যবহারকারীদের জন্য Lifecycle বা CoroutineScope-এর পরিবর্তে ViewModel গ্রহণ করে এমন .cachedIn()-এর একটি ওভারলোড যোগ করা হয়েছে। (I97d81, b/175332619)
- জাভা কলারদের অ্যাসিঙ্ক পদ্ধতিতে PagingData ট্রান্সফর্ম অপারেশন ব্যবহার করার অনুমতি দেয়।
এর জন্য ট্রান্সফর্ম অপারেটরের আর্গুমেন্টে Executor গ্রহণ করা হয়।
এখন সব -Sync ট্রান্সফর্ম অপারেটর থেকে -Sync সাফিক্স
সরিয়ে দেওয়া হয়েছে এবং Kotlin Coroutine ব্যবহারকারীদের
এক্সটেনশন ফাংশন কল করে অস্পষ্টতা দূর করতে হবে যা সাসপেন্ডিং ব্লক গ্রহণ করে।
সব PagingData ট্রান্সফর্মেশন অপারেটরকে এক্সটেনশনে
স্ট্যাটিক PagingDataTransforms ক্লাসের অধীনে সরানো হয়েছে। Java ব্যবহারকারীদের স্ট্যাটিক হেল্পারের মাধ্যমে কল করতে হবে, যেমন,
PagingDataTransforms.map(pagingData, transform)Kotlin ব্যবহারকারীদের জন্য সিনট্যাক্স একই, তবে আপনাকে ফাংশন ইমপোর্ট করতে হবে। (If6885, b/172895919)
সমস্যার সমাধান
- প্যাজিনেশনের শেষ প্রান্তে আগেই পৌঁছে গেলে,
adapter.refresh()চলাকালীনRemoteMediator.load()কল করা যাবে না, এমন একটি সমস্যার সমাধান করা হয়েছে।
ভার্সন 3.0.0-alpha11
১৬ ডিসেম্বর, ২০২০
androidx.paging:paging-*:3.0.0-alpha11 রিলিজ করা হয়েছে। ভার্সন 3.0.0-alpha11-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- নিম্নলিখিত প্রাথমিক ব্যবহারের ক্ষেত্রে সেভ করা স্টেট সাপোর্ট যোগ করা হয়েছে (সম্পূর্ণ সাপোর্ট, বিশেষ করে লেয়ার্ড সোর্স কেসের ক্ষেত্রে এখনও কাজ চলছে):
- ফ্লো ক্যাশে করা হয়েছে এবং অ্যাপ্লিকেশন বন্ধ করা হয়নি (যেমন, ফ্লো একটি ভিউ মডেলে ক্যাশে করা হয়েছে এবং প্রসেসে অ্যাক্টিভিটি আবার তৈরি করা হয়েছে)
- পেজিং সোর্স গণনা করা হয়, প্লেসহোল্ডার চালু করা থাকে এবং লেআউট স্ট্যাগার করা থাকে না।
API-তে পরিবর্তন
PagingSource.getRefreshKey()এখন স্থিতিশীল API (I22f6f, b/173530980)PagingSource.invalidateআর ওপেন ফাংশন নয়। ইনভ্যালিডেশন হলে আপনি বিজ্ঞপ্তি পেতে চাইলে, ইনভ্যালিডেট ওভাররাইড করার পরিবর্তে registerInvalidatedCallback পদ্ধতি কল করার কথা বিবেচনা করুন। (I628d9, b/173029013, b/137971356)- Pager-এ এখন একটি পরীক্ষামূলক কনস্ট্রাক্টর আছে, এর পাশাপাশি সাধারণ কনস্ট্রাক্টরও আছে। এর ফলে, অপ্ট-ইন অ্যানোটেশনের মাধ্যমে পরীক্ষামূলক API অপরীক্ষামূলক পাবলিক API-তে লিক হয়ে যায় না। (I9dc61, b/174531520)
- সুবিধাজনক প্রপার্টি আপডেট করা হয়েছে,
CombinedLoadStates.refresh,CombinedLoadStates.prepend,CombinedLoadStates.appendশুধুমাত্রLoadingথেকেNotLoading-এ ট্রানজিশন করতে মিডিয়েটর ও সোর্স লোড স্টেট, দুটিইNotLoadingহওয়ার পরে যাতে রিমোট আপডেট প্রয়োগ করা হয়েছে তা নিশ্চিত করা যায়। (I65619) LoadParams.pageSize সরিয়ে দেওয়া হয়েছে (এটি আগেই সচল ছিল না)। আপনার PagingSource-এ
LoadParams.loadSizeব্যবহার করার সাজেশন দেওয়া হচ্ছে।LoadParams.loadSizeসবসময়PagingConfig.pageSize-এর সমান হয়, তবে প্রাথমিক লোড কলের ক্ষেত্রে এটিPagingConfig.initialLoadSize-এর সমান হয়।আপনি যদি Pager বা PagedList ব্যবহার না করে আপনার Paging2 DataSource পরীক্ষা করেন, তাহলে
pageSizePagingConfig.pageSize-এর সাথে নাও মিলতে পারে যদি আপনিinitialLoadSize-ও সেট করেন। আপনার টেস্টের জন্য এটি গুরুত্বপূর্ণ হলে, এর পরিবর্তে Pager/PagedList ব্যবহার করে দেখুন যা ইন্টার্নালি আপনার DataSource লোড পদ্ধতির জন্য সঠিক PageSize সেট করবে। (I98ac7, b/149157296)
সমস্যার সমাধান
- PagingConfig.maxSize সেট করা অবস্থায় সেপারেটর ব্যবহার করার সময় IllegalStateException-এর কারণে হওয়া ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I0ed33, b/174787528)
- RemoteMediator সেট করা থাকলে (I8cf5a) প্রাথমিক লোডিংয়ের পরে PREPEND / APPEND-এর লোড স্টেট
NotLoading(endOfPaginationReached = true)অবিলম্বে আপডেট না হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে - একটি সমস্যার সমাধান করা হয়েছে যেখানে .snapshot(), .peek() ইত্যাদির মতো প্রেজেন্টার-সাইড API, ListUpdateCallback আপডেটের মধ্যে আগের (পুরনো) তালিকা ফিরিয়ে দিত।
- Separators অপারেটর RemoteMediator-এর সাথে ব্যবহার করার সময় হেডার বা ফুটার যোগ না হওয়ার সমস্যা সমাধান করা হয়েছে
- LoadState আপডেট করার সময় RemoteMediator-এর জন্য NotLoading, Loading স্টেটে আটকে যাওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে
- Paging2.0 কম্প্যাটিবিলিটি API,
.asPagingSourceFactory(), ভুল CoroutineDispatcher-এ ব্যাকিংDataSourceশুরু করার কারণ হতে পারে এমন একটি সমস্যার সমাধান করা হয়েছে। এটি ক্র্যাশ এবং সম্ভাব্য ANR কেস সমাধান করে, বিশেষ করে যখন রুমের বর্তমান PagingSource-এর ইমপ্লিমেন্টেশন ব্যবহার করা হয়, যা এই কম্প্যাটিবিলিটি পাথ ব্যবহার করে।
ভার্সন 3.0.0-alpha10
২ ডিসেম্বর, ২০২০
androidx.paging:paging-*:3.0.0-alpha10 রিলিজ করা হয়েছে। ভার্সন 3.0.0-alpha10-এ এইসব কমিট আছে।
API-তে পরিবর্তন
বন্ধ করে দেওয়া
dataRefreshFlowএবংdataRefreshListenerAPI সরিয়ে দেওয়া হয়েছে কারণ loadStateFlow / Listener আপডেটের সাথে এগুলি অপ্রয়োজনীয়। যারা মাইগ্রেট করছেন, তাদের জন্য loadStateFlow-এর সমতুল্য হল:loadStateFlow.distinctUntilChangedBy { it.refresh } .filter { it.refresh is NotLoading }
সমস্যার সমাধান
- RemoteMediator
REFRESH-এর জন্য endOfPaginationReached এখন LoadState আপডেটে সঠিকভাবে প্রোপাগেট করে এবং রিমোটAPPENDওPREPENDট্রিগার হওয়া থেকে আটকায়। (I94a3f, b/155290248) - প্রাথমিক পৃষ্ঠা খালি থাকা বা
ভারী ফিল্টারিংয়ের কারণে খালি তালিকা দেখানো হলে, তা আর পেজিংকে
PREPENDবাAPPENDলোড শুরু করতে বাধা দেবে না। (I3e702, b/168169730) - দ্রুত বাতিল করার ঘটনা ঘটলে,
getRefreshKey-এর পরবর্তী জেনারেশনে কল করা হয় না, এমন একটি সমস্যার সমাধান করা হয়েছে। (I45460, b/170027530)
এক্সটার্নাল কন্ট্রিবিউশন
- একটি নতুন অ্যাবস্ট্রাক্ট ক্লাস InvalidatingPagingSourceFactory যোগ করা হয়েছে
যার মধ্যে একটি
.invalidate()API আছে যা এটি থেকে নির্গত হওয়া সমস্ত PagingSources-এ ইনভ্যালিডেট ফরওয়ার্ড করে। @claraf3-কে ধন্যবাদ! (Ie71fc, b/160716447)
পরিচিত সমস্যা
- RemoteMediator b/172254056 ব্যবহার করার সময় .insertSeparators() ট্রান্সফর্ম থেকে হেডার ও ফুটার সাথে সাথে নাও দেখা যেতে পারে
- RemoteMediator ব্যবহার করলে রিমোট
LoadStateআটকে যেতে পারে যদিRemoteMediator.load()রিটার্ন করার আগে ইনভ্যালিডেশন এবংPagingSource.load(LoadParams.Refresh(...))সম্পূর্ণ হয় b/173717820
ভার্সন 3.0.0-alpha09
১১ নভেম্বর ২০২০
androidx.paging:paging-*:3.0.0-alpha09 রিলিজ করা হয়েছে। ভার্সন 3.0.0-alpha09-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- replaceWith ক্লজের মাধ্যমে dataRefreshFlow / Listener পদ্ধতি সম্পূর্ণভাবে বাতিল করুন। (I6e2dd)
সমস্যার সমাধান
- RemoteMediator-এর সাথে সেপারেটর ব্যবহার করার সময়
IllegalArgumentExceptionথ্রো করা হলে এবং endOfPagination রিটার্ন করার কথা এমন রিমোট লোড এখনও চলছে (I3a260), সেই সময় ইনভ্যালিডেট ট্রিগার করা হলে সেই সমস্যার সমাধান করা
ভার্সন 3.0.0-alpha08
২৮ অক্টোবর, ২০২০
androidx.paging:paging-*:3.0.0-alpha08 রিলিজ করা হয়েছে। ভার্সন 3.0.0-alpha08-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
DataSource.InvalidatedCallback-এর Kotlin / Java ভেরিয়েন্ট ফাংশনাল ইন্টারফেসের (Kotlin 1.4-এ উপলভ্য) মাধ্যমে Kotlin-এ SAM-কনভার্সন চালু করে একত্রিত করা হয়েছে। এছাড়াও, এটি এমন একটি সমস্যার সমাধান করে যেখানে.mapবা.mapByPage-এর মাধ্যমে ট্রান্সফর্ম করার পরে ইনভ্যালিডেট কলব্যাকের কোটলিন ভেরিয়েন্ট কল করা হয়নি। (I1f244, b/165313046)
সমস্যার সমাধান
- ViewPager-এর সাথে পেজিংয়ের ইন্টার্যাকশন অনেক উন্নত করা হয়েছে। বিশেষ করে, পেজ অবৈধ হওয়ার কারণে পেজিং আর
RemoteMediator#loadকল বাতিল করবে না। এছাড়াও, REFRESH অনুরোধ সফলভাবে সম্পূর্ণ না হওয়া পর্যন্ত, REFRESH করার প্রয়োজন হলে, এটি আর কোনও অ্যাপেন্ড/প্রিপেন্ড লোড অনুরোধ করবে না। (I6390b, b/162252536) - MissingGetterMatchingBuilder-এর জন্য API লিন্ট চেক androidx-এর জন্য চালু করা হয়েছে (I4bbea, b/138602561)
- একটি সমস্যার সমাধান করা হয়েছে যেখানে ব্যাকগ্রাউন্ড থ্রেড থেকে RecyclerView-কে বিজ্ঞপ্তি দেওয়ার কারণে
.withLoadState*ConcatAdapterসহায়ক ক্র্যাশ করত (I18bb5, b/170988309) - একটি সমস্যা সমাধান করা হয়েছে যেখানে খুব ছোট খালি নয় এমন পৃষ্ঠা লোড করার সময় কখনও কখনও প্রিফেচকে সঠিকভাবে লোড ট্রিগার করা থেকে বিরত রাখে।Iffda3 b/169259468
ভার্সন 3.0.0-alpha07
১ অক্টোবর, ২০২০
androidx.paging:paging-*:3.0.0-alpha07 রিলিজ করা হয়েছে। ভার্সন 3.0.0-alpha07-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- Async PagingData Guava-ভিত্তিক অপারেটররা এখন এক্সিকিউশন কন্ট্রোল করার জন্য প্যারামিটার হিসেবে Executor গ্রহণ করে। (Id4372)
সমস্যার সমাধান
- রেস কন্ডিশনের কারণে RemoteMediator-এ IndexOutOfBounds ব্যতিক্রম ঠিক করা হয়েছে। (I00b7f, b/165821814)
- DataSource -> PagingSource কনভার্সনে রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে, যার ফলে PagingSource, DataSource থেকে আসা ইনভ্যালিডেশন সিগন্যাল উপেক্ষা করতে পারে।
- পেজ ফেচিং লজিকে একটি সমস্যার সমাধান করা হয়েছে যা কখনও কখনও PagingDataAdapter.refresh() চালু না হওয়া পর্যন্ত PagingSource-এর নতুন জেনারেশন বেছে নিতে ব্যর্থ হয়
- RemoteMediator-এর সাথে PagingSource-এ (যেমন Room-এর মাধ্যমে তৈরি করা) কনভার্ট করা DataSource ব্যবহার করার সময় স্ক্রল-পজিশন কখনও কখনও হারিয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে
এক্সটার্নাল কন্ট্রিবিউশন
- PagingData-এর জন্য RxJava2, RxJava3 এবং Guava-ভিত্তিক অ্যাসিঙ্ক ট্রান্সফর্মেশন অপারেটর যোগ করার জন্য @simonschiller-কে ধন্যবাদ!
ভার্সন 3.0.0-alpha06
২ সেপ্টেম্বর, ২০২০
androidx.paging:paging-*:3.0.0-alpha06 রিলিজ করা হয়েছে। ভার্সন 3.0.0-alpha06-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
UnsupportedOperationException-এর সাথে আরও স্পষ্ট মেসেজ দেখানো হয় যখনইPagingDataAdapter.setHasStableIdsকল করা হয়, তখনই স্টেবল আইডির জন্য সহায়তা না থাকার মেসেজ দেখানো হয়। (Ib3890, b/158801427)
সমস্যার সমাধান
- insertSeparators আর খালি পৃষ্ঠা ফিল্টার করে না, এর ফলে প্রেজেন্টার প্রিফেচ ডিস্ট্যান্স মেনে চলে, এমনকি অনেক খালি পৃষ্ঠা যোগ করা হলেও। (I9cff6, b/162538908)
ভার্সন 3.0.0-alpha05
১৯ আগস্ট, ২০২০
androidx.paging:paging-*:3.0.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 3.0.0-alpha05-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- প্রেজেন্ট করা ডেটা অনেক বেশি ফিল্টার করা থাকলেও, পেজিং এখন সঠিকভাবে পেজ প্রিফেচ করে
- আবার চেষ্টা করা লোডে
LoadResult.Errorফিরিয়ে দিলে, আইটেম অ্যাক্সেস আর ভুলভাবে আবার চেষ্টা করার ট্রিগার করে না
এক্সটার্নাল কন্ট্রিবিউশন
- কিছু টেস্ট ক্লিন-আপ করার জন্য Clara F-কে ধন্যবাদ! (549612)
ভার্সন 3.0.0-alpha04
৫ আগস্ট, ২০২০
androidx.paging:paging-*:3.0.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 3.0.0-alpha04-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
AsyncPagingDataDiffer-এpeek()API যোগ করা হয়েছে এবংPagingDataAdapter-এ ট্রিগার পেজ লোড করা ছাড়াই উপস্থাপিত ডেটা অ্যাক্সেস করার অনুমতি দেওয়া হয়েছে। (I38898, b/159104197)PagingDataAdapter-এsnapshot()API যোগ করা হয়েছে এবংAsyncPagingDataDiffer-এ পৃষ্ঠা ফেচ ট্রিগার না করেই উপস্থিত আইটেম রিট্রিভ করার অনুমতি দেওয়া হয়েছে। (I566b6, b/159104197)- স্ট্যাটিক তালিকা দেখানোর অনুমতি দিতে একটি
PagingData.from(List<T>)কনস্ট্রাক্টর যোগ করা হয়েছে, যা সামগ্রিক PagingData ফ্লোয়ের সাথে একত্রিত করে নির্দিষ্ট অবস্থায় স্ট্যাটিক তালিকা দেখানো যেতে পারে, যেমন, প্রাথমিক REFRESH সম্পূর্ণ হওয়ার আগে অথবা শুধু ট্রান্সফর্মেশন পরীক্ষা করার জন্য। (Id134d) - dataRefresh Flow / Listener API সরিয়ে দিন, কারণ সেগুলি REFRESH-এ উপস্থাপিত আইটেমের স্টেট এক্সপোজ করার উদ্দেশ্যে তৈরি করা হয়েছিল, কিন্তু loadState Flow / Listener কলব্যাক টাইমিং এবং itemCount প্রপার্টিতে উন্নতির ফলে এটি অপ্রয়োজনীয় হয়ে গেছে (Ia19f3)
PagingSourceএবংRemoteMediator-এর জন্য RxJava3 কম্প্যাটিবিলিটি র্যাপার যোগ করা হয়েছে (I49ef3, b/161480176)
সমস্যার সমাধান
toPagingSourceFactoryহেল্পারের মাধ্যমেPositionalDataSource-কেPagingSource-এ কনভার্ট করা হয়েছে, যার মধ্যে Room-এর মাধ্যমে জেনারেট করাPagingSourceঅন্তর্ভুক্ত আছে এখন জাম্পিংকে সাপোর্ট করার জন্য নিজেকে সঠিকভাবে চিহ্নিত করে। (I3e84c, b/162161201)- submitData-এর সিঙ্ক্রোনাস ভেরিয়েন্ট ব্যবহার করার সময়
কখনও কখনও রেস কন্ডিশন তৈরি হওয়ার ফলে
ClosedSendChannelException(I4d702, b/160192222) হওয়ার সমস্যা সমাধান করা হয়েছে
এক্সটার্নাল কন্ট্রিবিউশন
- Slack-এর হয়ে RxJava3 কম্প্যাটিবিলিটি র্যাপার যোগ করার জন্য জ্যাক সুইয়ার্সকে ধন্যবাদ! (I49ef3, b/161480176)
ভার্সন 3.0.0-alpha03
২২ জুলাই, ২০২০
androidx.paging:paging-*:3.0.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 3.0.0-alpha03-এ এইসব কমিট আছে।
API-তে পরিবর্তন
- PagingState-এর কনস্ট্রাক্টর এখন সর্বজনীন, যা getRefreshKey() (I8bf15) প্রয়োগ করার সময় টেস্টিং আরও সহজ করে তোলে
- Java থেকে DataSource kotlin ম্যাপ ফাংশন ভেরিয়েন্ট লুকানো হয়েছে, যাতে আসল ও kotlin ভেরিয়েন্টের মধ্যে অস্পষ্টতা দূর করা যায়। (If7b23, b/161150011)
- Kotlin ব্যবহারকারীদের সুবিধার জন্য তৈরি করা অপ্রয়োজনীয় API-কে @JvmSynthetic (I56ae5) হিসেবে চিহ্নিত করা হয়েছে
- LoadResult.Page's constructor-এর জন্য ওভারলোড যোগ করা হয়েছে যা itemsBefore ও itemsAfter-কে ডিফল্ট হিসেবে COUNT_UNDEFINED (I47849) সেট করে
- আগে থেকে থাকা PagingData অপারেটরকে সাসপেন্ডিং পদ্ধতি গ্রহণ করার জন্য তৈরি করা হয়েছে এবং Java ব্যবহারকারীদের জন্য নতুন mapSync, flatMapSync ও filterSync নন-সাসপেন্ডিং অপারেটর নিয়ে আসা হয়েছে। আগেকার ট্রান্সফর্মেশন পদ্ধতিগুলি এক্সটেনশন ফাংশনে সরিয়ে দেওয়া হয়েছে, তাই Kotlin ব্যবহারকারীদের এখন সেগুলি ইমপোর্ট করতে হবে। (I34239, b/159983232)
সমস্যার সমাধান
- Room (এবং PositionalDataSource) PagingSources এখন প্রথম পৃষ্ঠার অংশ হিসেবে একটি লিডিং সেপারেটর দেখাবে, তাই ব্যবহারকারীকে এটি দেখতে স্ক্রল করতে হবে না। (I6f747, b/160257628)
- প্লেসহোল্ডারে আইটেম অ্যাক্সেস করা হলে এখন PagingSource লোড সঠিকভাবে ট্রিগার হয় যতক্ষণ না PagingData.filter() (I95625, b/158763195) দ্বারা ট্রান্সফর্ম হওয়ার পরে অনুরোধ করা ইন্ডেক্স পূরণ করে এমন একটি পৃষ্ঠা ফেরত আসে
- PagingSource কোনও সমস্যা রিটার্ন করার পরে স্ক্রল করলে, PagingDataAdapter.retry() যাতে আবার চেষ্টা করতে পারে, সেই জন্য একটি সমস্যার সমাধান করা হয়েছে। (I1084f, b/160194384)
- কোনও পৃষ্ঠা ড্রপ করার পরে আইটেম অ্যাক্সেস করার সময়, আইটেম অ্যাক্সেস প্রিফেচডিস্ট্যান্সের (Ie95ae, b/160038730) মধ্যে থাকলেও পৃষ্ঠা লোড না হওয়ার সমস্যা সমাধান করে
- ড্রপ ইভেন্টের পরে PagingConfig.maxSize সেট করলে আর প্লেসহোল্ডার চালু হয় না (I2be29, b/159667766)
ভার্সন 3.0.0-alpha02
২৪ জুন, ২০২০
androidx.paging:paging-*:3.0.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 3.0.0-alpha02-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- সাধারণ ডিফল্ট মান (I39c50, b/158576040) সহ
PagingConfig-এর কনস্ট্রাক্টরের জন্য ওভারলোড যোগ করা হয়েছে - সাধারণ ডিফল্ট ভ্যালু (Ie91f5) সহ
PagingDataAdapterএবংAsyncPagingDataDiffer-এর কনস্ট্রাক্টরের জন্য ওভারলোড যোগ করা হয়েছে - অ্যাডাপ্টার API,
dataRefreshFlowএবংdataRefreshListenerএখন একটি বুলিয়ান পাস করে যা সিগন্যাল দেয় যেPagingDataখালি আছে কিনা (I6e37e, b/159054196) - RemoteMediator-এর জন্য RxJava এবং Guava API যোগ করা হয়েছে - RxRemoteMediator এবং ListenableFutureRemoteMediator
isEmpty()ওfirstItemOrNull()-এর (I3b5b6, b/158892717) মতো সাধারণ আইটেম অ্যাক্সেসের জন্য PagingState-এ সহায়ক যোগ করা হয়েছে
সমস্যার সমাধান
- ভুল PagingSource-এর আকস্মিক পুনঃব্যবহার আটকাতে, Pager এখন ফ্যাক্টরিতে PagingSource-এর পুনঃব্যবহার চেক করে, যা অস্পষ্ট ত্রুটি (I99809, b/158486430) দেখায়
- RemoteMediator REFRESH থেকে হওয়া ব্যর্থতা আর PagingSource-কে লোড করা থেকে আটকাতে পারবে না (I38b1b, b/158892717)
submitData-এর সাসপেন্ড না হওয়া ভার্সন,submitData-এর সাসপেন্ড হওয়া ভার্সনের পরে কল করা হলে, একাধিকPagingData-এ একই সাথে সংগ্রহ করার কারণে আর ক্র্যাশ হয় না। (I26358, b/158048877)- "পেজার থেকে দুবার সংগ্রহ করা যাবে না" সংক্রান্ত ব্যতিক্রমী সমস্যা সমাধান করা হয়েছে যা কনফিগারেশন পরিবর্তন করার পরে হতে পারে (I58bcc, b/158784811)
ভার্সন 3.0.0-alpha01
১০ জুন, ২০২০
androidx.paging:paging-*:3.0.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 3.0.0-alpha01-এ এইসব কমিট আছে।
পেজিং লাইব্রেরি 3.0-এ আপডেট করা হয়েছে, যাতে বেশ কিছু প্রধান নতুন ফিচার চালু করা যায়।
3.0-এর নতুন ফিচার
- Kotlin কোরুটিন ও Flow-এর জন্য ফার্স্ট-ক্লাস সহায়তা।
- coroutines suspend functions, RxJava Single বা Guava ListenableFuture primitives-এর সাথে অ্যাসিঙ্ক লোডিংয়ের জন্য সহায়তা।
- আবার চেষ্টা করা ও রিফ্রেশ করার কার্যকারিতা সহ রেসপন্সিভ UI ডিজাইনের জন্য বিল্ট-ইন লোড স্টেট ও ত্রুটি সিগন্যাল।
- রিপোজিটরি লেয়ারে করা উন্নতি
- ডেটা সোর্সের সিমপ্লিফায়েড ইন্টারফেস
- সরলীকৃত নেটওয়ার্ক + ডেটাবেস পেজিনেশন
- বাতিল করা সংক্রান্ত সহায়তা
- প্রেজেন্টেশন লেয়ারে করা উন্নতি
পরিচিত সমস্যা
- Paging 3 javadocs এখনও উপলভ্য নয়। ইতিমধ্যে, উপরে লিঙ্ক করা গাইড বা Kotlin ডকুমেন্ট ব্যবহার করুন। (b/158614050)
ভার্সন ২.১.২
ভার্সন ২.১.২
১৮ মার্চ, ২০২০
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.1
১৮ ডিসেম্বর, ২০১৯
androidx.paging:paging-*:2.1.1 রিলিজ করা হয়েছে। ভার্সন 2.1.1-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- প্লেসহোল্ডার বন্ধ করা থাকলে, PositionalDataSources থেকে অবিচ্ছিন্ন প্রাথমিক লোড এখন শেষ অ্যাক্সেসের আশেপাশে কেন্দ্রীভূত হয়
ভার্সন 2.1.0
ভার্সন 2.1.0
২৫ জানুয়ারি, ২০১৯
2.1.0-rc01 থেকে কোনও পরিবর্তন না করেই পেজিং 2.1.0 রিলিজ করা হয়েছে।
ভার্সন 2.1.0-rc01
৬ ডিসেম্বর, ২০১৮
2.1.0-beta01 থেকে কোনও পরিবর্তন না করেই পেজিং 2.1.0-rc01 রিলিজ করা হয়েছে।
ভার্সন 2.1.0-beta01
১ নভেম্বর, ২০১৮
2.1.0-alpha01-এর থেকে কোনও পরিবর্তন না করেই পেজিং 2.1.0-beta01 রিলিজ করা হয়েছে।
Version 2.1.0-alpha01
১২ অক্টোবর, ২০১৮
পেজিং 2.1.0-alpha01-এ দুটি বড় সংযোজন রয়েছে - পৃষ্ঠা ড্রপ করা এবং প্রতিটি আর্টিফ্যাক্টের জন্য KTX এক্সটেনশন লাইব্রেরি - পাশাপাশি অন্যান্য API পরিবর্তন এবং বাগফিক্স।
API-তে পরিবর্তন
- মেমরিতে লোড করা আইটেমের সংখ্যা সীমিত করতে
PagedList.Config.Builder.setMaxSize()যোগ করা হয়েছে। PagedList.Config.Builder-এর জন্য Kotlin বিকল্প হিসেবেandroidx.paging.Config()যোগ করা হয়েছেPagedList.Builder-এর জন্য Kotlin বিকল্প হিসেবেandroidx.paging.PagedList()যোগ করা হয়েছেLivePagedListBuilder-এর Kotlin বিকল্প হিসেবেDataSourceFactory.toLiveData()যোগ করা হয়েছেRxPagedListBuilder-এর জন্য Kotlin বিকল্প হিসেবেDataSourceFactory.toObservable()এবংtoFlowable()যোগ করা হয়েছে- PagedList সোয়্যাপ করা হলে শোনার জন্য
AsyncPagedListDiffer.addPagedListListener()যোগ করা হয়েছে। b/111698609 PagedListAdapter.onCurrentListChanged()ভেরিয়েন্ট যোগ করা হয়েছে যা পুরনো ও নতুন তালিকা পাস করে, আগের ভেরিয়েন্ট বাতিল করা হয়েছে।PagedListAdapter/AsyncPagedListDiffer.submitList()ভেরিয়েন্ট যোগ করা হয়েছে যা একটি অতিরিক্ত কলব্যাক নেয় যা ডিফারেন্স করার পরে পেজ করা তালিকা দেখানো হলে/যখন ট্রিগার হয়। এটি আপনাকে অন্যান্য UI আপডেটের সাথে PagedList অদল-বদল সিঙ্ক্রোনাইজ করতে দেয়। b/73781068- মেমরিতে কতগুলি আইটেম আছে তা আপনাকে জানাতে
PagedList.getLoadedCount()যোগ করা হয়েছে। মনে রাখবেন, প্লেসহোল্ডার বন্ধ করা থাকলে রিটার্ন ভ্যালু সবসময়.size()-এর সমান হয়।
সমস্যার সমাধান
- তালিকা আবার ব্যবহার করা হলে, ডিফারেন্সিয়েট করার সময় রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে b/111591017
PagedList.loadAround()এখন ইন্ডেক্স ভুল হলেIndexOutOfBoundsExceptionদেখায়। আগে এটি অন্য কোনও অস্পষ্ট ব্যতিক্রমের কারণে ক্র্যাশ করতে পারত।- এমন একটি সমস্যার সমাধান করা হয়েছে যেখানে অপরিবর্তিত ডেটার সাথে অত্যন্ত ছোট প্রাথমিক লোড সাইজের ফলে আর কোনও লোডিং হবে না b/113122599
ভার্সন 2.0.0
ভার্সন 2.0.0
১ অক্টোবর, ২০১৮
একটি বাগফিক্স সহ পেজিং 2.0.0 রিলিজ করা হয়েছে।
সমস্যার সমাধান
PositionalDataSourceএবং প্লেসহোল্ডার b/114635383 ব্যবহার করে খুব দ্রুত স্ক্রল করার সময় যে ক্র্যাশ হতে পারত তা ঠিক করা হয়েছে।
ভার্সন 2.0.0-beta01
২ জুলাই, ২০১৮
সমস্যার সমাধান
- কিছু প্রিপেন্ড কেসে (প্লেসহোল্ডার বন্ধ, PositionalDataSource) কন্টেন্ট অদৃশ্য হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে b/80149146
- (
1.0.1-এ আগেই রিলিজ করা হয়েছে) ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে যেখানেPagedListAdapterএবংAsyncPagedListDifferমুভ ইভেন্ট সিগন্যাল করতে ব্যর্থ হবে। b/110711937
AndroidX-এর আগের ডিপেন্ডেন্সি
এর পরে, Paging-এর 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
২৬ জুন, ২০১৮
runtime-এ একটিমাত্র বাগফিক্স সহ পেজিং 1.0.1 রিলিজ করা হয়েছে। আমরা স্থিতিশীলতার জন্য 1.0.1 ব্যবহার করার জন্য সাজেস্ট করি। Paging RxJava2 1.0.1-ও রিলিজ করা হয়েছে এবং এটি 1.0.0-rc1-এর মতো একই।
সমস্যার সমাধান
- ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে যেখানে
PagedListAdapterএবংAsyncPagedListDifferমুভ ইভেন্ট সিগন্যাল করতে পারত না। b/110711937
RxJava2 ভার্সন 1.0.0
RxJava2 ভার্সন 1.0.0-rc1
১৬ মে, ২০১৮
পেজিং RxJava2 1.0.0-rc1 প্রাথমিক আলফা ভার্সন থেকে কোনও পরিবর্তন না করেই রিলিজ ক্যান্ডিডেটে
স্থানান্তরিত হচ্ছে।
ভার্সন 1.0.0
ভার্সন 1.0.0-rc1
১৯ এপ্রিল, ২০১৮ পেজিং রিলিজ ক্যান্ডিডেট
Paging 1.0.0 রিলিজের জন্য আমাদের কাছে আর কোনও পরিচিত সমস্যা বা নতুন ফিচার শিডিউল করা নেই। 1.0.0-rc1 ব্যবহার করার জন্য আপনার প্রোজেক্ট আপগ্রেড করুন এবং
আমাদের এটি পরীক্ষা করতে সাহায্য করুন যাতে আমরা একটি রক সলিড 1.0.0 শিপ করতে পারি।
এই রিলিজে কোনও পরিবর্তন করা হয়নি, এটি 1.0.0-beta1-এর মতোই।
Version 1.0.0-beta1
৫ এপ্রিল, ২০১৮
রিলিজ ক্যান্ডিডেট হিসেবে প্রকাশ করার আগে পেজিং অল্প সময়ের জন্য বিটা ভার্সনে থাকবে।
Paging 1.0-এর জন্য API-তে আর কোনও পরিবর্তন করার পরিকল্পনা আমাদের নেই এবং API-তে কোনও পরিবর্তন করার জন্য অনেক বেশি পরিশ্রম করতে হবে।
পেজিংয়ের জন্য Alpha RxJava2 সাপোর্ট আলাদা ঐচ্ছিক মডিউল (android.arch.paging:rxjava2:1.0.0-alpha1) হিসেবে রিলিজ করা হয়েছে
এবং এটি স্থিতিশীল না হওয়া পর্যন্ত সাময়িকভাবে আলাদাভাবে ভার্সন করা হবে।
এই নতুন লাইব্রেরি LivePagedListBuilder-এর একটি RxJava2 বিকল্প প্রদান করে, যা Observables এবং Flowables তৈরি করতে পারে, Executors-এর পরিবর্তে Schedulers নেয়:
Kotlin
val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable()
জাভা
Observable<PagedList<Item>> pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable();
নতুন ফিচার
- নতুন
android.arch.paging:rxjava2আর্টিফ্যাক্টের মাধ্যমেRxPagedListBuilderযোগ করা হয়েছে।
API-তে পরিবর্তন
বিল্ডারে এক্সিকিউটরদের ভূমিকা স্পষ্ট করতে API-তে পরিবর্তন করা হয়েছে:
setBackgroundThreadExecutor()-এর নাম পরিবর্তন করেsetFetchExecutor()করা হয়েছে (PagedList.BuilderওLivePagedListBuilder-এ)setMainThreadExecutor()-এর নাম পরিবর্তন করেsetNotifyExecutor()(PagedList.Builder-এ) করা হয়েছে।
PagedList.mCallbacksমেম্বারকে ব্যক্তিগত হিসেবে সেট করার সমস্যা সমাধান করা হয়েছে।
সমস্যার সমাধান
LivePagedListBuilder, Arch Components IO থ্রেড পুলের পরিবর্তে, নির্দিষ্ট এক্সিকিউটরে প্রাথমিকPagedListলোড ট্রিগার করে।ইন্টার্নাল
DataSourceর্যাপারে (DataSource.mapপ্রয়োগ করতে ব্যবহার করা হয়, এর পাশাপাশি প্লেসহোল্ডার-বন্ধ করাPositionalDataSourceলোডিং) ভুল আচরণ ঠিক করা হয়েছে b/77237534
Version 1.0.0-alpha7
২১ মার্চ, ২০১৮
Lifecycles 1.1.1-এর সাথে পেজিং 1.0.0-alpha7 রিলিজ করা হয়েছে। যেহেতু Paging alpha7 উপরে উল্লেখ করা Function ক্লাসের মুভের উপর নির্ভর করে, তাই আপনাকে lifecycle:runtime ডিপেনডেন্সি android.arch.lifecycle:runtime:1.1.1-এ আপডেট করতে হবে।
পেজিং alpha7 হল পেজিং বিটা ভার্সনে আসার আগে চূড়ান্ত রিলিজ করার পরিকল্পনা।
API-তে পরিবর্তন
DataSource.LoadParamsঅবজেক্টে এখন পাবলিক কনস্ট্রাক্টর আছে এবংDataSource.LoadCallbackঅবজেক্ট এখন অ্যাবস্ট্রাক্ট। এটিDataSourceর্যাপ করা বা মক কলব্যাকের মাধ্যমে সরাসরিDataSourceটেস্ট করার সুবিধা দেয়। b/৭২৬০০৪২১- DataSource ও DataSource.Factory
-এর জন্য ম্যাপার
map(Function<IN,OUT>)আপনাকেDataSource-এর মাধ্যমে লোড করা ফলাফল ট্রান্সফর্ম, র্যাপ বা সাজাতে দেয়।mapByPage(<List<IN>,List<OUT>>)ব্যাচ প্রসেসিংয়ের জন্য একই সুবিধা চালু করে (যেমন, SQL থেকে লোড করা আইটেমকে যদি অতিরিক্তভাবে আলাদা ডেটাবেস কোয়েরি করতে হয়, তাহলে সেটি ব্যাচ হিসেবে করা যেতে পারে।)
PagedList#getDataSource()-কে সুবিধাজনক পদ্ধতি হিসেবে যোগ করা হয়েছে b/72611341- API থেকে সব বাতিল করা ক্লাস সরিয়ে দেওয়া হয়েছে, যার মধ্যে
recyclerview.extensionsপ্যাকেজের অবশিষ্টাংশ এবংLivePagedListProviderঅন্তর্ভুক্ত। - ম্যাপের কার্যকারিতা চালু করতে
DataSource.Factory-কে ইন্টারফেস থেকে অ্যাবস্ট্র্যাক্ট ক্লাসে পরিবর্তন করা হয়েছে।
সমস্যার সমাধান
- Changed Builders to be final. b/70848565
- মাল্টি-টেবিল কোয়েরি ম্যানেজ করার জন্য রুম
DataSourceইমপ্লিমেন্টেশন এখন ঠিক করা হয়েছে - এই সমাধান রুম 1.1.0-beta1-এর মধ্যে রয়েছে, উপরে দেখুন। - প্লেসহোল্ডার চালু থাকলে এবং
মোট সাইজ পৃষ্ঠা সাইজের সঠিক মাল্টিপল হলে,
PositionalDataSource-এর জন্যBoundaryCallback.onItemAtEndLoadedকল করা হত না, এই বাগটি সমাধান করা হয়েছে।
Version 1.0.0-alpha5
২২ জানুয়ারি, ২০১৮
সমস্যার সমাধান
- প্লেসহোল্ডার বন্ধ করা থাকলে পৃষ্ঠা লোড হওয়া সংক্রান্ত সমস্যার সমাধান করা b/70573345
- IllegalArgumentException বাগ b/70360195 ট্র্যাক করার জন্য অতিরিক্ত লগিং (এবং সম্ভাব্য রুম-সাইড সমাধান)
- Javadoc স্যাম্পেল কোড সংক্রান্ত সমস্যার সমাধান b/70411933, b/71467637