۱۵ ژانویه ۲۰۱۹
WorkManager
WorkManager 1.0.0-beta02 منتشر شد. این نسخه حاوی چند رفع اشکال است.
رفع اشکالها
- یک مورد حاشیهای که در آن کار دورهای میتوانست بیشاز یک بار در هر بازه زمانی در دستگاههای دارای Android 6.0 (سطح API ۲۳) اجرا شود برطرف شد. b/121998363
ConcurrentModificationExceptionدر دستگاههای دارای Android نسخه ۵.۱ (سطح API ۲۲) یا پایینتر برطرف شد. b/121345393- اجرای اشتباه کار در زمانی که «محدودیتها» در دستگاههای دارای Android نسخه ۵.۱ (سطح میانای برنامهسازی کاربردی ۲۲) یا پایینتر برآورده نمیشود برطرف شد. b/122578012
- Optimized work completion handling to be faster in some edge cases. b/122358129
- تغییری برای رسیدگی به شرایط رقابت احتمالی بین چندین نمونه از
LiveDataکه WorkManager استفاده میکند اضافه شد. - Moved to use
Roomdependency1.1.1instead of1.1.1-rc01; these versions are identical. b/122578011
۱۹ دسامبر ۲۰۱۸
WorkManager
WorkManager 1.0.0-beta01 منتشر شد. این نسخه حاوی هیچ تغییری در میانای برنامهسازی کاربردی نیست؛ در آینده، انتظار میرود WorkManager تا نسخه بعدی ازنظر میانای برنامهسازی کاربردی پایدار بماند، مگراینکه مشکل بحرانیای وجود داشته باشد. این نسخه حاوی چند رفع اشکال است.
رفع اشکالها
- Previously-cancelled children of successfully completed parent work will no longer run. b/120811767
- کلاسهای ثبت گزارش بهدرستی مقداردهی اولیه شدهاند (عمدتاً درطول آزمایشها ظاهر میشوند).
۱۸ دسامبر ۲۰۱۸
پیمایش
ناوبری 1.0.0-alpha09 منتشر شده است. این نسخهٔ پخش حاوی تغییرات ناسازگار API است؛
لطفاً بخش تغییرات ناسازگار را در زیر ببینید.
تصمیم گرفتهایم توسعه مصنوع android.arch.navigation:navigation-testing را ادامه ندهیم. اگرچه این روش برای آزمایش داخلی NavController مفید بوده است، اما اکیداً توصیه میکنیم از استراتژیهای آزمایش جایگزین استفاده کنید، مانند شبیهسازی نمونه NavController برای تأیید اینکه فراخوانیهای صحیح navigate() انجام میشوند. این
رویکرد بهطور مفصل در
گفتگوی Single Activity در AndroidDevSummit 2018 مورد بحث قرار گرفته است
و ما روی اسناد اضافی بهطور خاص درباره آزمایش
با Navigation کار خواهیم کرد.
ویژگیهای جدید
MenuItems withmenuCategory="secondary"will no longer pop the back stack when used withNavigationUImethods. b/120104424AppBarConfigurationاکنون به شما امکان میدهد یک نمونه بازگشتیOnNavigateUpListenerتنظیم کنید که وقتیnavController.navigateUp()falseرا برمیگرداند، فراخوانی میشود. b/79993862 b/120690961
تغییرات ناگهانی
- When using an
<argument>with anargType="reference", Navigation no longer parses the reference, instead providing the raw resource ID itself. b/111736515 onNavDestinationSelected()اکنون بهطور پیشفرض به مقصد شروع نمودار ناوبری شما بازمیگردد، و آنها را با روشهایsetupسازگار میکند. برای جلوگیری از پدیدار شدن پشته قبلیها،menuCategory="secondary"را بهMenuItemاضافه کنید. aosp/852869- روشهای
fromBundle()کلاسهایArgsتولیدشده اکنون بهجایBundleتهیپذیر،Bundleغیرتهی میگیرند aosp/845616
رفع اشکالها
- آرگومانها اکنون بهدرستی از پیوندهای عمیق بهعنوان
argTypeصحیح تجزیه میشوند بهجای اینکه همیشه بهعنوان رشته باشند b/110273284 - اکنون «ناوبری» منابع عمومی خود را بهدرستی صادر میکند b/121059552
- Safe Args اکنون با «افزایه Android Gradle» نسخه 3.4 Canary 4 و بالاتر سازگار است b/119662045
۱۲ دسامبر ۲۰۱۸
WorkManager
WorkManager 1.0.0-alpha13 منتشر شده است. این نسخهٔ پخش حاوی تغییر جزئی در میانای برنامهسازی کاربردی است که برای برخیاز کاربران Kotlin مفید خواهد بود.
تغییرات میانای برنامهسازی کاربردی
-
androidx.work.Resultبه کلاس داخلیListenableWorkerمنتقل شده است. این کار از تداخل بازسازی کد با کلاس سطح بالایResultKotlin جلوگیری میکند. این یک تغییر مخرب در میانای برنامهسازی کاربردی است. b/120564418
تغییرات ناسازگار میانای برنامهسازی کاربردی
-
androidx.work.Resultبه کلاس داخلیListenableWorkerمنتقل شده است.
۶ دسامبر ۲۰۱۸
صفحهبندی
صفحهبندی 2.1.0-rc01 بدون تغییر نسبت به 2.1.0-beta01 منتشر شده است.
پیمایش
ناوبری 1.0.0-alpha08 منتشر شده است. این نسخهٔ پخش حاوی تغییرات ناسازگار API است؛
لطفاً بخش تغییرات ناسازگار را در زیر ببینید.
ویژگیهای جدید
- برچسبهای مقصد، وقتی با روشهای
NavigationUIاستفاده میشوند، اکنون بهطور خودکار نمونههای{argName}را درandroid:labelشما با آرگومان صحیح جایگزین میکنند b/80267266 - «پیمایش» اکنون به «کتابخانه پشتیبانی» نسخه ۲۸.۰.۰ وابسته است b/120293333
تغییرات ناگهانی
- نام
OnNavigatedListenerبهOnDestinationChangedListenerتغییر کرد b/118670572 OnDestinationChangedListenerاکنونBundleمتغیر مستقل را نیز میپذیرد aosp/837142- مشخصههای
app:clearTaskوapp:launchDocumentو روشهای مرتبط با آنها برداشته شدهاند. Useapp:popUpTowith the root of your graph to remove all destinations from your back stack. b/119628354 ActivityNavigator.Extrasاکنون از الگویBuilderاستفاده میکند و توانایی تنظیم هر پرچمIntent.FLAG_ACTIVITY_را اضافه میکند aosp/828140- نام
NavController.onHandleDeepLinkبهhandleDeepLinkتغییر کرد aosp/836063 - بسیاری از کلاسها و روشهایی که برای زیرکلاسسازی درنظر گرفته نشدهاند، مانند
NavOptions،NavInflater،NavDeepLinkBuilder، وAppBarConfiguration،finalشدهاند aosp/835681 - روش منسوخشده
NavHostFragment.setGraph()برداشته شده است aosp/835684 - روش منسوخشده
NavigationUI.navigateUp(DrawerLayout, NavController)برداشته شده است. aosp/835684 - ایجاد Fragment به
FragmentNavigatorمنتقل شده است، که واگذاری ایجاد Fragment بهFragmentFactoryرا آسانتر میکند. b/119054429 - سازنده
NavGraphNavigatorدیگرContextرا نمیپذیرد aosp/835340 - NavigatorProvider اکنون
یک کلاس است، نه یک میانجی.
NavigatorProviderبرگرداندهشده توسطgetNavigatorProvider()عملکردش را تغییر نداده است. aosp/830660 NavDestination.navigate()برداشته شد. درعوض باnavigate()درNavigatorتماس بگیرید. aosp/830663- بازسازی کد قابلتوجه
Navigator، حذف نیاز بهOnNavigatorNavigatedListenerو درعوض داشتنnavigateبرای برگرداندنNavDestinationکه به آن پیمایش شده است. - نمونههای
Navigatorدیگر نمیتوانند رویدادهای پاپ بهNavControllerارسال کنند. برای رهگیری فشار دادن دکمه برگشتن و فراخوانیnavController.popBackStack()، ازOnBackPressedCallbackاستفاده کنید. aosp/833716
رفع اشکالها
popUpTonow works consistently when the destination is a<navigation>element b/116831650- تعدادی از اشکالها که منجر به
IllegalArgumentExceptionهنگام استفاده از نمودارهای تودرتو میشدند برطرف شد b/118713731 b/113611083 b/113346925 b/113305559 - شاخصه
dataPatternاز مقصدهای<activity>اکنون با فراخوانیtoString()، آرگومانها را از آرگومانهای غیررشتهای پر میکند b/120161365
آرگومانهای ایمن
- «آرگومانهای ایمن» از اشیای «سریالشدنی»، ازجمله مقادیر Enum، پشتیبانی میکند. انواع Enum
میتوانند بااستفاده از enum literal بدون نام کلاس، مقدار پیشفرض تنظیم کنند
(مثلاً
app:defaultValue="READ") b/111316353 - Safe Args از آرایههای همه انواع پشتیبانیشده پشتیبانی میکند b/111487504
- Safe Args اکنون زیرپوشههای فهرستهای راهنمای منبع را نادیده میگیرد b/117893516
- Safe Args در جاهای مناسب حاشیهنویسیهای
@Overrideرا اضافه میکند b/117145301
۵ دسامبر ۲۰۱۸
WorkManager
WorkManager 1.0.0-alpha12 منتشر شده است. این نسخهٔ پخش حاوی برخی تغییرات ناسازگار در میانای برنامهسازی کاربردی است؛ لطفاً بخش تغییرات ناسازگار در میانای برنامهسازی کاربردی را در زیر ببینید. این نسخه احتمالاً بهعنوان اولین نسخه بتای ما منتشر خواهد شد. alpha12 همچنین شامل بهروزرسانیهای گسترده اسناد است.
تغییرات میانای برنامهسازی کاربردی
- خروجی ساختاریافته جدید
work-rxjava2،RxWorkerرا معرفی میکند. اینListenableWorkerاست که بایدSingle<Payload>داشته باشد. - پشتیبانی از Firebase JobDispatcher بهدلیل منسوخ شدن قریبالوقوع آن برداشته شده است. این یعنی با ورود به نسخه بتا، مصنوع
work-firebaseدیگر بهروزرسانی نخواهد شد. در آینده بهدنبال افزودن جایگزین خواهیم بود. PayloadباResultترکیب شد.Resultاکنون یک «کلاس مهرومومشده» با سه پیادهسازی واقعی است که میتوانید ازطریقResult.success()(یاResult.success(Data))،Result.failure()(یاResult.failure(Data))، وResult.retry()بهدست آورید.ListenableFutureشما اکنون بهجایPayload،Resultنتیجه دارد.Workers don't have getter and setter methods for outputData. این تغییر ناگهانی است.- Added
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)andConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)and variants to better support slow triggering content URIs. b/119919774 WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)گونه اضافه شد. این روش به میانای برنامهسازی کاربردی ۲۶ نیاز دارد.- روشهای افزونه Kotlin
Operation.await()وListenableFuture.await()اضافه شد. - نام
Operation.getException()بهOperation.getThrowable()تغییر کرد. این تغییر ناسازگار است. - کلاس
ContentUriTriggersو روشهای ارجاعدهنده به آن دیگر برای استفاده عمومی دردسترس نیستند. این تغییر ناسازگار است. - بقیه روشهای varargs در
WorkManager،WorkContinuation، وOneTimeWorkRequestبرای سادهسازی API برداشته شد. برای رفع مشکلات ساخت، میتوانید varargs موجود را باArrays.asList(...)بپوشانید. ما همچنان نسخههای تکآرگومانی هر روش را لحاظ میکنیم. این تغییر ناسازگار است. -
WorkContinuation.combine(OneTimeWorkRequest, *)متغیر برداشته شد. آنها میانای برنامهسازی کاربردی گیجکنندهای ارائه میکردند؛ روشهایcombineموجود قابلفهمتر هستند. این تغییر ناگهانی است.
رفع اشکالها
- پیادهسازیهای پیشاز Marshmallow اکنون در بازیابی از مرگ پردازش تکلیفی که درحال اجرا است قابلاعتمادتر هستند.
LiveDataکه ازطریقobserveForeverمشاهده میشود ازطریق WorkManager ردیابی میشود. این یک اصلاحیه سازگار با نسخههای قدیمی برای کتابخانه Room است. b/74477406- اکنون اگر شیء سریالیشده از حداکثر اندازه خود فراتر رود،
Data.Builder.build()استثنایی را ایجاد میکند. قبلاً این اتفاق فقط در رشته پسزمینهای رخ میداد که نمیتوانستید آن را بهدرستی مدیریت کنید. - Further distinguished stopped vs. cancelled work;
getWorkInfoById()will return aWorkInfowith theCANCELLEDStateduringListenableWorker.onStopped(). nullResultرا بهعنوان شکست درListenableWorkerدرنظر بگیرید. b/120362353- اصلاح احتمالی برای Shield Tablets که API 24 را اجرا میکنند و گاهی
IllegalArgumentExceptionرا نشان میدادند. b/119484416
تغییرات ناسازگار میانای برنامهسازی کاربردی
- پشتیبانی از Firebase JobDispatcher بهدلیل منسوخ شدن قریبالوقوع آن برداشته شده است. این یعنی با ورود به نسخه بتا، مصنوع
work-firebaseدیگر بهروزرسانی نخواهد شد. در آینده بهدنبال افزودن جایگزینی خواهیم بود. PayloadباResultترکیب شد.Resultاکنون یک «کلاس مهرومومشده» با سه پیادهسازی واقعی است که میتوانید ازطریقResult.success()(یاResult.success(Data))،Result.failure()(یاResult.failure(Data))، وResult.retry()بهدست آورید.ListenableFutureشما اکنون بهجایPayload،Resultنتیجه دارد.Workers don't have getter and setter methods for outputData.- روشهای افزونه Kotlin
Operation.await()وListenableFuture.await()اضافه شد. - نام
Operation.getException()بهOperation.getThrowable()تغییر کرد. - کلاس
ContentUriTriggersو روشهای ارجاعدهنده به آن دیگر برای استفاده عمومی دردسترس نیستند. - بقیه روشهای varargs در
WorkManager،WorkContinuation، وOneTimeWorkRequestبرای سادهسازی API برداشته شد. برای رفع مشکلات ساخت، میتوانید varargs موجود را باArrays.asList(...)بپوشانید. ما همچنان نسخههای تکآرگومانی هر روش را لحاظ میکنیم. -
WorkContinuation.combine(OneTimeWorkRequest, *)متغیر برداشته شد. آنها میانای برنامهسازی کاربردی گیجکنندهای ارائه میکردند؛ روشهایcombineموجود قابلفهمتر هستند.
۴ دسامبر ۲۰۱۸
اتاق
Room 2.1.0-alpha03 با پشتیبانی از کوروتینها و چندین رفع اشکال منتشر شد.
تغییرات میانای برنامهسازی کاربردی
- FTS
tokenizerدر@Fts3/@Fts4اکنون بهجای Enum، یک رشته میگیرد. این کار به Room اجازه میدهد از توکنسازهای سفارشی استفاده کند. توکنسازهای داخلی هنوز درFtsOptionsبهعنوان ثابتهای رشتهای تعریف میشوند. b/119234881
ویژگیهای جدید
- Couroutines: روشهای DAO اکنون میتوانند توابع تعلیق باشند. برای پشتیبانی از عملکردهای تعلیق در Room، مصنوع جدیدی بهنام
room-coroutinesمنتشر شده است. b/69474692 - روشهای DAO که با
@Insert،@Delete، یا@Updateحاشیهنویسی شدهاند اکنون ازListenableFutureبهعنوان نوع پاسخ پشتیبانی میکنند. b/119418331
رفع اشکالها
- اشکالی را برطرف کردیم که در آن Room بهاشتباه تلاش میکرد سازندهای با ستونها در ویژگی
ignoredColumnsاز@Entityپیدا کند. b/119830714 - اشکالی که در آن Room پارامترهای روش DAO را بهعنوان نهایی در پیادهسازی تولیدشده علامتگذاری نمیکرد برطرف شد. b/118015483
- اشکالی برطرف شد که در آن پردازنده Room هنگام گزارش خطا در پُرسمانی با نمادهای خاص ازکار میافتاد. b/119520136
- اشکالی برطرف شد که در آن Room دیگر پیادهسازیهای مختلف
Collectionرا بهعنوان متغیرهای مستقل عبارتINرد میکرد. b/119884035 - اشکالی برطرف شد که در آن LiveData برگرداندهشده از Room، وقتی برای همیشه مشاهده میشد، جمعآوری زباله میشد و باعث میشد دیگر دادههای جدید منتشر نکند. b/74477406
- قفل بسته
RoomDatabaseبرای کاهش درگیری بر سر قفل بهروز شد. b/117900450
۸ نوامبر ۲۰۱۸
WorkManager
WorkManager 1.0.0-alpha11 منتشر شد. این نسخه شامل تغییرات زیادی است که در beta به میانای برنامهسازی کاربردی پایدار تبدیل خواهد شد.
در این نسخه پخش، تغییرات مخرب API وجود دارد؛ لطفاً بخش تغییرات مخرب API را در زیر ببینید.
تغییرات میانای برنامهسازی کاربردی
-
work-runtime-ktxCoroutineWorkerجدیدی را معرفی میکند. - نام
WorkStatusبهWorkInfoتغییر کرد. نام همه انواع روشهایgetStatusمربوطه به انواعgetWorkInfoمربوطه تغییر کرده است. این تغییر ناگهانی است. ListenableWorker.onStopped()دیگر آرگومان بولی را که نشاندهنده لغو شدنWorkRequestاست نمیپذیرد.WorkManagerدیگر این تمایز را قائل نمیشود. این تغییر ناگهانی است.- نام بسته
androidx.work.testبه بستهandroidx.work.testingتغییر کرده است. این تغییر ناسازگار است. - تنظیمکنندهها در
Constraintsدیگر بخشی از میانای برنامهسازی کاربردی عمومی نیستند. این تغییر ناسازگار است. WorkerParameters.getTriggeredContentUris()وWorkerParameters.getTriggeredContentAuthorities()آرایههایی که قبلاً برگردانده شدهاند. اکنون این روشها «مجموعهها» را برمیگردانند. این تغییر ناگهانی است.- نام
ListenableWorker.onStartWork()بهListenableWorker.startWork()تغییر کرد. این تغییر ناسازگار است. - سازنده
WorkStatusدیگر بخشی از میانای برنامهسازی کاربردی عمومی نیست. این تغییر ناسازگار است. - نام
Configuration.getMaxJobSchedulerID()وConfiguration.getMinJobSchedulerID()بهترتیب بهConfiguration.getMinJobSchedulerId()وConfiguration.getMaxJobSchedulerId()تغییر کرد. این تغییر ناسازگار است. - تعداد زیادی حاشیهنویسی
@NonNullبه میانای برنامهسازی کاربردی عمومی اضافه شد تا ارگونومی میانای برنامهسازی کاربردی بهبود یابد. - میانای برنامهسازی کاربردی
WorkManager.enqueueUniqueWork()را اضافه کنید تاOneTimeWorkRequestهای منحصربهفرد را بدون نیاز به ایجادWorkContinuationدر صف قرار دهید. - همه انواع روشهای
enqueueوcancelدرWorkManagerاکنون نوع جدیدOperationرا برمیگردانند. این تغییر ناسازگار است. - All variants of
enqueueno longer accept varargs forWorkRequests. این تغییر ناسازگار است. بهجای آن از «مجموعهها» استفاده کنید. میتوانید ازArrays.asList()برای اصلاح کد موجود استفاده کنید. این کار را برای کاهش سطح میانای برنامهسازی کاربردی و تعداد روشها انجام دادیم. - تلاش برای
initializeWorkManagerبیشاز یکبار در هر فرایند اکنون منجر بهIllegalStateExceptionمیشود. این تغییر ناسازگار است.
رفع اشکالها
-
WorkRequest.Builderدر آرتیفکتwork-runtime-ktxاکنون ازListenableWorkerاستفاده میکند. تصحیح b/117666259 - مطمئن شوید زمان اجرای بعدی برای
PeriodicWorkدر آینده است. Fixes b/118204399 - هنگام استفاده از WorkManager در راهاندازی برنامه، ورودی/خروجی دیسک احتمالی را بردارید. Fixes b/117796731
- رفع شرایط رقابت در
WorkConstraintsTracker. android-workmanager/issues/56 را برطرف میکند
تغییرات ناسازگار میانای برنامهسازی کاربردی
- نام
WorkStatusبهWorkInfoتغییر کرد. نام همه انواع روشهایgetStatusمربوطه به انواعgetWorkInfoمربوطه تغییر کرده است. ListenableWorker.onStopped()دیگر آرگومان بولی را که نشاندهنده لغو شدنWorkRequestاست نمیپذیرد.WorkManagerدیگر این تمایز را قائل نمیشود.- نام بسته
androidx.work.testبه بستهandroidx.work.testingتغییر کرده است. - تنظیمکنندهها در
Constraintsدیگر بخشی از میانای برنامهسازی کاربردی عمومی نیستند. WorkerParameters.getTriggeredContentUris()وWorkerParameters.getTriggeredContentAuthorities()آرایههایی که قبلاً برگردانده شدهاند. اکنون این روشها «مجموعهها» را برمیگردانند.- نام
ListenableWorker.onStartWork()بهListenableWorker.startWork()تغییر کرد. - سازنده
WorkStatusدیگر بخشی از میانای برنامهسازی کاربردی عمومی نیست. - نام
Configuration.getMaxJobSchedulerID()وConfiguration.getMinJobSchedulerID()بهترتیب بهConfiguration.getMinJobSchedulerId()وConfiguration.getMaxJobSchedulerId()تغییر کرد. - همه گونههای روشهای
enqueueوcancelدرWorkManagerاکنون نوع جدیدOperationرا برمیگردانند. - All variants of
enqueueno longer accept varargs forWorkRequests. - تلاش برای
initializeWorkManagerبیشاز یکبار در هر فرایند اکنون منجر بهIllegalStateExceptionمیشود.
۱ نوامبر ۲۰۱۸
صفحهبندی
صفحهبندی 2.1.0-beta01 بدون تغییر نسبت به 2.1.0-alpha01 منتشر شده است.
۳۰ اکتبر ۲۰۱۸
اتاق
نسخه 2.1.0-alpha02 با چند رفع اشکال و یک ویژگی جدید منتشر شد.
ویژگیهای جدید
- پشتیبانی برای ارجاع دادن به
@DatabaseViewدر@Relationاضافه شد. b/117680932
رفع اشکالها
- اشکالی برطرف شد که در آن Room هنگام مشترک شدن و حذف کردن از نوع پاسخ Rx، عملیات ورودی/خروجی دیسک را در رشته اصلی انجام میداد. b/117201279
- اشکالی که در آن Room نمیتوانست مبدل نوع مناسبی برای فیلدی در کلاس موجودیت Kotlin پیدا کند برطرف شد. b/111404868
- اشکالی برطرف شد که در آن Room کد نادرستی برای پیادهسازی میانای
DAOحاوی روش پیشفرض Kotlin بدون آرگومان تولید میکرد. b/117527454 - تجزیهکننده دستور زبان SQLite مربوط به Room بهروزرسانی شد و مشکل عملکردی که باعث طولانی شدن زمان ساخت میشد برطرف شد. b/117401230
۲۹ اکتبر ۲۰۱۸
پیمایش
Navigation 1.0.0-alpha07 با رفع اشکال و تغییرات میانای برنامهسازی کاربردی منتشر شد.
ویژگیهای جدید
- کلاس جدید AppBarConfiguration به شما امکان میدهد سفارشیسازی کنید که کدام مقصدها مقصد سطح بالا درنظر گرفته شوند. برای جزئیات بیشتر، اسناد بهروزشده را ببینید. b/117333663
- اکنون میتوانید آرگومانها را به مقصد شروع نمودارتان منتقل کنید b/110300470
- پیوندهای عمیق اکنون از طرحهای سفارشی با نقطه، خط تیره، و علامت جمع پشتیبانی میکنند. b/112806402
تغییرات ناگهانی
- واحد
navigation-testing-ktxدرnavigation-testing artifactادغام شده است و دیگر منتشر نخواهد شد. - ساخته
navigation-testingاکنون به کتابخانه استاندارد Kotlin وابسته است. این API تغییر کرده است تا با قراردادهای Kotlin سازگارتر باشد، اما میتوانید همچنان از آن برای آزمایشهای نوشتهشده در Java استفاده کنید. - نمودارهای پیمایش ثبتشده مانیفست فراداده دیگر پشتیبانی نمیشوند. b/118355937
- دیگر نمیتوان کنشها را به مقصدهای <activity> پیوست کرد. aosp/785539
رفع اشکالها
- پیوندهای عمیق اکنون پارامترهای پُرسمان را بهدرستی تجزیه میکنند. b/110057514
- اکنون مقصدهای فعالیت بهدرستی همه پویانماییهای ورود و خروج را اعمال میکنند. b/117145284
- خرابیای که پساز تغییرات پیکربندی هنگام استفاده از «راهیابهای» سفارشی رخ میداد برطرف شد. b/110763345
آرگومانهای ایمن
- آرگومانهای ایمن اکنون وابستگی ثابتی به افزایه Android Gradle نسخه ۳.۲.۱ دارند. b/113167627
- اکنون میتوان برای کلاسهای داخلی مسیر ایجاد کرد. b/117407555
- مشکل تولید «مسیرها» به نمودار <include> برطرف شد. b/116542123
۱۲ اکتبر ۲۰۱۸
صفحهبندی
Paging 2.1.0-alpha01 با دو افزونه اصلی (حذف صفحه و کتابخانههای افزونه KTX برای هر آرتیفکت) و همچنین چندین تغییر دیگر در میانای برنامهسازی کاربردی و رفع اشکال منتشر شده است.
تغییرات میانای برنامهسازی کاربردی
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اضافه شدند - Added
AsyncPagedListDiffer.addPagedListListener()for listening to when PagedList is swapped. b/111698609 - Added
PagedListAdapter.onCurrentListChanged()variant that passes old and new list, deprecated previous variant. - انواع
PagedListAdapter/AsyncPagedListDiffer.submitList()اضافه شد که یک فراخوانی برگشتی اضافی را میگیرد که اگر/وقتی pagedlist نمایش داده شود، پساز تفکیک، راهاندازی میشود. این کار به شما امکان میدهد تا تعویض PagedList را با سایر بهروزرسانیهای واسط کاربر همگامسازی کنید. b/73781068 PagedList.getLoadedCount()اضافه شد تا بدانید چند مورد در حافظه وجود دارد. توجه داشته باشید که اگر جایبانها غیرفعال باشند، مقدار برگشتی همیشه برابر با.size()است.
رفع اشکالها
- رفع مشکل شرایط رقابتی هنگام مقایسه کردن درصورت استفاده مجدد از فهرستها b/111591017
PagedList.loadAround()اکنون وقتی نمایه نامعتبر باشدIndexOutOfBoundsExceptionرا برمیگرداند. قبلاً ممکن بود با استثنای نامشخص دیگری ازکار بیفتد.- موردی را برطرف کردیم که در آن اندازه بارگیری اولیه بسیار کوچک همراه با دادههای تغییرنکرده منجر به عدم بارگیری بیشتر میشد b/113122599
۱۱ اکتبر ۲۰۱۸
WorkManager
WorkManager 1.0.0-alpha10 با پشتیبانی از کار ناهمگام تحت کنترل توسعهدهنده منتشر شد. در این نسخهٔ پخش، تغییرات API ناسازگار با نسخههای قبلی وجود دارد؛ لطفاً بخش تغییرات API ناسازگار با نسخههای قبلی را در زیر ببینید.
پیشبینی میکنیم که WorkManager درحال ورود به مراحل نهایی دوره آلفای خود است. انتظار داریم که میانای برنامهسازی کاربردی در نسخه بتا پایدار باشد، بنابراین لطفاً کمی وقت بگذارید و بازخوردتان را در ردیاب مشکل ما ثبت کنید.
تغییرات میانای برنامهسازی کاربردی
- همه روشها و کلاسهای
deprecatedقبلی، بهویژه سازنده پیشفرضWorker، برداشته شدند. این یک تغییر ناسازگار در میانای برنامهسازی کاربردی است. - نام
NonBlockingWorkerبهListenableWorkerتغییر کرد، که اکنون یک کلاس عمومی آشکارشده و آماده استفاده است.ListenableWorkerدسترسی به یک روش انتزاعی را فراهم میکند،ListenableFuture<Payload> onStartWork()که در رشته اصلی فراخوانی میشود. شروع و پردازش کار بهصورت ناهمگام به شما بستگی دارد. وقتی تمام شد، بایدListenableFutureرا بهطور مناسب بهروز کنید. پیادهسازیهای مرجعListenableFutureدر بستهFuturesدرalpha02ارائه شده است (بخشWorkManagerرا در زیر ببینید).-
WorkerListenableWorkerرا گسترش میدهد و همچنان مانند قبل با روش انتزاعیResult doWork()عمل میکند. - برخیاز روشها و اعضا از
WorkerبهListenableWorkerمنتقل شدند. - بهزودی پیادهسازیهای مرجع را برای
ListenableWorkerهایی که از کوروتینهای Kotlin (پساز انتشار نسخههای پایدار) و RxJava2 استفاده میکنند ارائه خواهیم داد.
- میانای
WorkerFactoryو پیادهسازی عینیDefaultWorkerFactoryدر کلاس انتزاعی بهنامWorkerFactoryادغام شدهاند. پیادهسازی تضمین میکند که رفتار پیشفرض مبتنی بر بازتاب بهعنوان آخرین تلاش برای هر نمونهWorkerFactoryایجادشده توسط کاربر فراخوانی میشود. این تغییر ناگهانی است. -
WorkManager.synchronous()وWorkContinuation.synchronous()و همه روشهای مرتبط برداشته شد. ListenableFuture<Void>بهعنوان نوع پاسخ بسیاری از روشها در میانای برنامهسازی کاربردی اضافه شد. این یک تغییر ناسازگار در میانای برنامهسازی کاربردی است.- اکنون میتوانید بااستفاده از
ListenableFutureبهطور همزمان دریافت و مشاهده کنید. برای مثال،WorkManager.enqueue()قبلاًvoidرا برمیگرداند؛ اکنونListenableFuture<Void>را برمیگرداند. میتوانیدListenableFuture.addListener(Runnable, Executor)یاListenableFuture.get()را فراخوانی کنید تا پساز تکمیل عملیات، کد را اجرا کنید. - توجه داشته باشید که این
ListenableFutureها به شما نمیگویند که عملیات موفقیتآمیز بوده است یا نه؛ فقط میگویند که عملیات تمام شده است. برای پیدا کردن این اطلاعات، همچنان باید روشهای WorkManager را زنجیرهای کنید. - ما تماسهای
cancel()را در این اشیاء نادیده میگیریم، زیرا گیجکننده هستند و استدلال درباره آنها دشوار است (آیا عملیات را لغو میکنید یا کار حاصل را؟). این در قراردادFutureاست. - برای حفظ برابری با روشهای همگام
getStatus*، انواعListenableFutureرا ارائه کردهایم و نام موارد موجود را کهLiveDataرا برمیگرداندند تغییر دادهایم تا بهطور صریح «LiveData» را بهعنوان بخشی از نام داشته باشند (برای مثال،getStatusesByIdLiveData(UUID)). این یک تغییر API شکننده است.
- اکنون میتوانید بااستفاده از
رفع اشکالها
- مشکل شناختهشده از alpha09 مربوط به فایلهای
androidx-annotations.proتکراری برطرف شد. میتوانید با حذف کردنexclude 'META-INF/proguard/androidx-annotations.pro'از فایل gradle، راه حل موقت را از یادداشتهای انتشار قبلی بردارید. - پیکربندیهای proguard برای حفظ سازنده جدید
Workerاضافه شد. b/116296569 - Fix potential
NullPointerExceptionin a race condition where work wasREPLACEd. b/116253486 and b/116677275 WorkContinuation.combine()now accepts one or moreWorkContinuations instead of two or more. b/117266752
تغییرات ناسازگار میانای برنامهسازی کاربردی
- همه روشها و کلاسهای
deprecatedقبلی، بهویژه سازنده پیشفرضWorker، برداشته شد. - میانای
WorkerFactoryو پیادهسازی عینیDefaultWorkerFactoryدر کلاس انتزاعی بهنامWorkerFactoryادغام شدهاند. -
WorkManager.synchronous()وWorkContinuation.synchronous()حذف شد. - روشهای
WorkManager.getStatus*()اکنونListenableFutureرا برمیگردانند. WorkManager.getStatus*LiveData()برگرداندنLiveData.
شاخصهای آتی
1.0.0-alpha02 Futures منتشر شد.
تغییرات میانای برنامهسازی کاربردی
- توسعهدهندگان اکنون میتوانند از
ResolvableFutureوAbstractResolvableFutureبهعنوان پیادهسازیهای عینی سبکListenableFutureاستفاده کنند.
۸ اکتبر ۲۰۱۸
اتاق
اتاق 2.1.0-alpha01 آزاد شده است.
ویژگیهای جدید
- FTS: Room اکنون از نهادهایی با جدول نگاشت FTS3 یا FTS4 پشتیبانی میکند. کلاسهای حاشیهنویسیشده با
@Entityاکنون میتوانند با@Fts3یا@Fts4نیز حاشیهنویسی شوند تا کلاسی با جدول جستجوی کل نوشتار نگاشتشده اعلام شود. گزینههای FTS برای سفارشیسازی بیشتر ازطریق روشهای حاشیهنویسی دردسترس است. b/62356416 - نماها: Room اکنون از اعلام کلاس بهعنوان پُرسمان ذخیرهشده، که بااستفاده از حاشیهنویسی DatabaseView @بهعنوان نما نیز شناخته میشود، پشتیبانی میکند. b/67033276
- Auto Value: Room اکنون از اعلام کلاسهای حاشیهنویسیشده AutoValue بهعنوان موجودیت و POJO پشتیبانی میکند. حاشیهنویسیهای Room
@PrimaryKey،@ColumnInfo،@Embedded، و@Relationاکنون میتوانند در روشهای انتزاعی کلاس حاشیهنویسیشده با مقدار خودکار اعلام شوند. توجه داشته باشید که این حاشیهنویسی باید با@CopyAnnotationsنیز همراه باشد تا Room بتواند آنها را بهدرستی درک کند. b/62408420 - پشتیبانی از انواع برگشتی Rx اضافی: روشهای DAO حاشیهنویسیشده با
@Insert،@Delete، یا@Updateاکنون از انواع برگشتی RxCompletable،Single<T>، وMaybe<T>پشتیبانی میکنند. b/63317956 - انواع تغییرناپذیر با
@Relation: Room قبلاً به فیلدهای حاشیهنویسیشده@Relationنیاز داشت تا قابلتنظیم باشند، اما اکنون میتوانند پارامترهای سازنده باشند. enableMultiInstanceInvalidation: یک API جدید درRoomDatabase.Builderاست که امکان باطل کردن در چندین نمونه RoomDatabase را بااستفاده از یک فایل پایگاه داده فراهم میکند. This multi-instance invalidation mechanism also works across multiple processes. b/62334005fallbackToDestructiveMigrationOnDowngrade: میانای برنامهسازی کاربردی جدیدی درRoomDatabase.Builderاست که درصورت تنزل نسخه، پایگاه داده را بهطور خودکار بازسازی میکند. b/110416954ignoredColumns: یک میانای برنامهسازی کاربردی جدید در حاشیهنویسی@Entityاست که میتوان از آن برای فهرست کردن فیلدهای نادیدهگرفتهشده براساس نام استفاده کرد. Useful for ignoring inherited fields on an entity. b/63522075
تغییرات میانای برنامهسازی کاربردی / رفتار
mCallbackandmDatabaseinRoomDatabaseare now@Deprecatedand will be removed in the next major version of Room. b/76109329
رفع اشکالها
- دو مشکل برطرف شد که در آنها Room بهدرستی از پایگاه داده خراب یا انتقال بد درطول مقداردهی اولیه بازیابی نمیشد. b/111504749 و b/111519144
- اکنون Room بهدرستی از سازنده اصلی Kotlin در کلاسهای داده استفاده میکند و نیاز به اعلام فیلدها بهعنوان
varsرا برطرف میکند. b/105769985
۱ اکتبر ۲۰۱۸
اتاق 2.0.0 بدون تغییر از 2.0.0-rc01 آزاد شد.
Paging 2.0.0 با یک رفع اشکال منتشر شده است.
صفحهبندی
رفع اشکالها
- خرابیای که ممکن بود هنگام پیمایش بسیار سریع بااستفاده از
PositionalDataSourceو جایبانهای b/114635383 رخ دهد برطرف شد.
۲۱ سپتامبر ۲۰۱۸
چرخه حیات 2.0.0 با یک رفع اشکال از 2.0.0-rc01 در ViewModel منتشر شد.
چرخه حیات
رفع اشکالها
- قانون ViewModel proguard که سازندهها را بهاشتباه حذف میکرد برطرف شد b/112230489
۲۰ سپتامبر ۲۰۱۸
پیمایش
Navigation 1.0.0-alpha06 با رفع اشکال و تغییرات میانای برنامهسازی کاربردی منتشر شد.
ویژگیهای جدید
- Shared Element Transitions for Fragment and Activity destinations are now supported b/79665225. برای اطلاعات بیشتر، پیادهسازی ناوبری با مؤلفه معماری ناوبری را ببینید
- Selecting an item in
NavigationViewwill now close any containing bottom sheet b/112158843
تغییرات میانای برنامهسازی کاربردی
- تغییر ناسازگار: روش Navigator
navigate()اکنون پارامترNavigator.Extrasرا میگیرد. - روش
getGraph()NavController اکنونNonNullاست b/112243286
رفع اشکالها
NavigationUI.setupWithNavController()no longer leaks views if used with views from individual destinations b/111961977- Navigator
onSaveState()is now only called once b/112627079
آرگومانهای ایمن
- کلاسهای «مسیرهای» مقصد ناوبری اکنون کلاس «مسیرهای» والد خود را درصورت وجود گسترش میدهند b/79871405
- کلاسهای Directions و Args اکنون پیادهسازی
toString()مفیدی دارند b/111843389
۱۹ سپتامبر ۲۰۱۸
WorkManager
WorkManager 1.0.0-alpha09 با رفع اشکال، بهروزرسانیهای زیرساخت، و تغییرات API منتشر شد.
مشکل شناختهشده
اگر با این مشکل مواجه شدید: «بیشاز یک فایل با مسیر مستقل از سیستمعامل META-INF/proguard/androidx-annotations.pro پیدا شد»، لطفاً کد زیر را بهعنوان راهحل موقت در فایل gradle خود قرار دهید تا مشکل را در alpha10 برطرف کنیم:
شیک
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
کاتلین
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
رفع اشکالها
- Added another fix that was needed for the "100 jobs" error. b/115560696
- Added some fixes for foreign key constraint errors due to race conditions. b/114705286
- تماسهای
ConstraintTrackingWorker.onStopped(boolean)بهWorkerزیرین واگذار شد. b/114125093 - اجرای حداقل تأخیر عقبنشینی صحیح برای Firebase JobDispatcher. b/113304626
- رشتهبندی بهبودیافته تضمین میکند که کتابخانه داخلی است.
- مشکل احتمالی مربوط به حذف موارد تکراری
LiveDataبهصورت داخلی را تصحیح کنید.
تغییرات میانای برنامهسازی کاربردی
- اکنون میتوانید با مشخص کردن
WorkerFactoryبهعنوان بخشی ازWorkManager.Configuration، نمونههایWorkerخودتان را در زمان اجرا ایجاد کنید. کارخانه بازگشتDefaultWorkerFactoryاست که با رفتار نسخههای قبلی WorkManager مطابقت دارد.- سازندههای پیشفرض برای
WorkerوNonBlockingWorkerاکنون بهعنوان منسوخ علامتگذاری شدهاند. لطفاً از سازنده جدید (Worker(Context, WorkerParameters)) استفاده کنید وsuper(Context, WorkerParameters)را فراخوانی کنید؛ نسخههای آینده WorkManager سازنده پیشفرض را حذف خواهند کرد.
- سازندههای پیشفرض برای
- ما استفاده از مصنوع جدید
ListenableFutureرا بهصورت داخلی (بدون وابستگیهای Guava) شروع کردهایم. در نسخههای پخش آتی، ListenableFutures را به میانای برنامهسازی کاربردی معرفی خواهیم کرد. این تغییر از آشکار شدن نهاییNonBlockingWorkerپشتیبانی خواهد کرد. - افزودن توانایی راهاندازی کار زمانبندیشده در
TestDriverازطریقTestDriver.setInitialDelayMet(UUID)وTestDriver.setPeriodDelayMet(UUID). b/113360060
تغییرات ناگهانی
- سازندههای پیشفرض
WorkerوNonBlockingWorkerمنسوخ شدهاند. لطفاً در اسرع وقت به سازنده جدید منتقل شوید. سازنده پیشفرض در نسخههای آینده برداشته خواهد شد.
۲۷ اوت ۲۰۱۸
WorkManager
WorkManager 1.0.0-alpha08 با رفع اشکال منتشر شد.
رفع اشکالها
- مؤلفههای WorkManager بهطور صریح بهعنوان «ناآگاه از راهاندازی مستقیم» برچسبگذاری شدهاند تا درطول راهاندازی مستقیم فعال نشوند. در آینده، نسخهای از WorkManager را ارائه خواهیم داد که از راهاندازی مستقیم آگاه است. b/112665532
- مشکلی که باعث میشد کار مجدداً امتحانشده اجرا نشود برطرف شد. b/112604021
- مشکل اجرا نشدن مکرر کار دورهای برطرف شد (مربوط به مشکل بالا). b/112859683
- خطمشیهای عقبنشینی را وقتی فرایند برنامه درحال اجرا است رعایت کردیم.
- پیامهای استثنا در
Dataاصلاح شد تا نشان دهد حد مجاز ۱۰ کیلوبایت است. - Lowered maximum value of
Configuration.setMaxSchedulerLimit(int)to 50 to account for some latency inJobSchedulerprocessing completion. b/112817355
۱۶ اوت ۲۰۱۸
WorkManager
WorkManager 1.0.0-alpha07 با رفع اشکال و تغییرات جزئی در میانای برنامهسازی کاربردی منتشر شد.
رفع اشکالها
- یک پُرسمان SQL بالقوه با محدودیتهای منفی که میتوانست تعداد نامحدودی نتیجه برگرداند برطرف شد.
- کاری که اجرایش تمام شده است اکنون بهدرستی همه نسخههای درانتظار آن کار را در «زمانبندیهای» دیگر لغو میکند. This led to exceeding the
JobSchedulerjobs limit. b/111569265 ConcurrentModificationExceptionدرConstraintTrackerبرطرف شد. b/112272753- حاشیهنویسیهای نوع پاسخ
Data.getBooleanArray(String)وData.getIntArray(String)بهجای@NonNullبه@Nullableتغییر کرد. b/112275229
تغییرات میانای برنامهسازی کاربردی
-
Workerاکنون کلاس جدیدی را گسترش میدهد،NonBlockingWorker. این موضوع بر استفاده کنونی تأثیری ندارد. در آینده،NonBlockingWorkerبه نهادی کاملاً پشتیبانیشده برای راهکارهای رشتهسازی سفارشی تبدیل خواهد شد. - حاشیهنویسیهای نوع پاسخ
Data.getBooleanArray(String)وData.getIntArray(String)به@Nullableبهجای@NonNullتغییر کرد. b/112275229 - افزونههای Kotlin:
Map.toWorkData()منسوخ شد وworkDataOf(vararg Pair<String, Any?>)سطح بالا اضافه شد تا با میاناهای برنامهسازی کاربردی موجود سازگارتر باشد.
۱۰ اوت ۲۰۱۸
پیمایش
نسخه 1.0.0-alpha05 Navigation با رفع اشکال منتشر شد.
رفع اشکالها
- اشکالی که باعث رفتار نادرست پشته برگشت میشد برطرف شد. b/111907708
- رفع اشکال در
equals()کلاسهای Generated Args. b/111450897 - رفع خرابی ساخت در Safe Args. b/109409713
- رفع مشکل تبدیل از شناسههای منبع به نامهای جاوا b/111602491
- رفع پیامهای خطا درباره تهیپذیری در افزونه Safe Args.
- حاشیهنویسیهای پوچپذیری جاافتاده را اضافه کنید.
۶ اوت ۲۰۱۸
نسخههای AndroidX از Lifecycle، Room، و Paging نسخه 2.0.0-rc01 را منتشر میکنند. همه مصنوعات از 2.0.0-beta01 بدون تغییر ماندهاند.
۱ اوت ۲۰۱۸
WorkManager
WorkManager 1.0.0-alpha06 با رفع اشکال منتشر شد.
رفع اشکالها
- Prevent a database lock when scheduling work. b/111801342
- رفع اشکالی که باعث میشود
PeriodicWorkدر حالت «چرت زدن» طبق زمانبندی اجرا نشود. b/111469837 - رفع شرایط رقابتی هنگام ردیابی محدودیتهایی که باعث ازکار افتادن
WorkManagerمیشود. googlecodelabs/android-workmanager/issues/56 - هنگام استفاده از
WorkRequest.Builder#build()،WorkRequestهای منحصربهفرد ایجاد کنید. b/111408337 - استفاده از
RescheduleReceiverرا فقط زمانی فعال کنید کهWorkRequestبه آن نیاز داشته باشد. b/111765853
۲۴ ژوئیه ۲۰۱۸
WorkManager
WorkManager 1.0.0-alpha05 با رفع اشکالهای مهم و تغییرات ثبت گزارش منتشر شد.
تغییرات میانای برنامهسازی کاربردی
WorkManager.getInstance()اکنون با@NonNullبهجای@Nullableحاشیهنویسی شده است. درعوض، اگر در موارد مقداردهی اولیه دستی، مقداردهی اولیه تکقلو بهدرستی انجام نشود، این روشIllegalStateExceptionرا برمیگرداند. این یک تغییر مخرب در میانای برنامهسازی کاربردی است.- میانای برنامهسازی کاربردی جدیدی (
Configuration.Builder.setMinimumLoggingLevel(int)) اضافه شد که میتواند سطح جزئیات WorkManager را کنترل کند. بهطور پیشفرض، WorkManagerLog.INFOو بالاتر را ثبت میکند. - امضای
Data.getString()تغییر کرده است تا دیگر مقدار پیشفرض نداشته باشد (بهطور ضمنیnullاست). این یک تغییر مخرب در میانای برنامهسازی کاربردی است. - برخیاز روشهای موردنیاز فقط برای استفاده داخلی بهعنوان
@hideعلامتگذاری شدهاند. این شامل سازندهConstraints،Data.toByteArray()، وData.fromByteArray(byte[])میشود. این یک تغییر ناسازگار در میانای برنامهسازی کاربردی است.
رفع اشکالها
- WorkManager دیگر در موارد شناختهشده پشتیبانگیری خودکار، کار را اجرا نمیکند. این امر ممکن است منجر به خرابی شده باشد. b/110564377
- مشکل زمانبندی دوگانه
PeriodicWorkRequestهنگام استفاده ازJobSchedulerبرطرف شد. b/110798652 - مشکل مربوط به عدم اجرای صحیح
PeriodicWorkRequestپساز چرت زدن دستگاه برطرف شد. b/111469837 - مشکل مربوط به تأخیرهای اولیه هنگام استفاده از Firebase JobDispatcher برطرف شد. b/111141023
- برخیاز شرایط رقابتی بالقوه و مشکلات زمانبندی برطرف شد.
BroadcastReceivers که دیگر نیاز نبود بهدرستی آزاد شد.- بهینهسازی عملکرد زمانبندی مجدد هنگام بازراهاندازی برنامهها پساز بسته شدن اجباری.
- Allowed
TestScheduler.setAllConstraintsMet(UUID)to be called before or after enqueuing the givenWorkRequest. b/111238024
تغییرات ناگهانی
WorkManager.getInstance()اکنون با@NonNullبهجای@Nullableحاشیهنویسی شده است.- امضای
Data.getString()تغییر کرد تا دیگر مقدار پیشفرض نداشته باشد (بهطور ضمنیnullاست). - برخیاز روشهای موردنیاز فقط برای استفاده داخلی بهعنوان
@hideعلامتگذاری شدهاند. این شامل سازندهConstraints،Data.toByteArray()، وData.fromByteArray(byte[])میشود.
۱۹ ژوئیه ۲۰۱۸
پیمایش
Navigation 1.0.0-alpha04 و افزونه gradle مرتبط با Safe Args حاوی تعدادی تغییرات API، تغییرات رفتاری، و رفع اشکال است.
تغییرات میانای برنامهسازی کاربردی / رفتار
- NavHostFragment will always set the current Fragment as the primary navigation fragment, ensuring that child fragment managers are popped before the outer NavController is popped b/111345778
آرگومانهای ایمن
- تغییرات ناگهانی:
app:typeبهapp:argTypeتغییر کرده است تا از تداخل با کتابخانههای دیگر مانند ConstraintLayout 2.0.0-alpha1 جلوگیری شود b/111110548 - پیامهای خطای Safe Args اکنون قابلکلیک هستند b/111534438
- کلاسهای Args اکنون تأیید میکنند که مشخصههای
NonNullدرواقع تهی نیستند b/111451769 - حاشیهنویسیهای
NonNullاضافی به کلاسهای تولیدشده NavDirections و Args اضافه شده است b/111455455 b/111455456
رفع اشکالها
- مشکل دکمه برگشت سیستم پساز پیوند عمیق به مقصد قطعه برطرف شد b/111515685
۱۲ ژوئیه ۲۰۱۸
پیمایش
Navigation 1.0.0-alpha03 و افزونه gradle مرتبط با Safe Args شامل تعدادی تغییرات API، تغییرات رفتاری، و رفع اشکال است.
تغییرات میانای برنامهسازی کاربردی / رفتار
- یک روش NavigationUI.setupWithNavController برای نوارابزار اضافه شده است b/109868820
- روش NavigationUI.setupWithNavController برای CollapsingToolbarLayout اضافه شده است b/110887183
- اکنون وقتی پشته قبلیها خالی باشد یا وقتی شناسه مقصد دادهشده در پشته قبلیها نباشد، popBackStack() مقدار نادرست را برمیگرداند b/110893637
- FragmentNavigator اکنون عملیات پیمایش را پساز ذخیره شدن وضعیت توسط FragmentManager نادیده میگیرد و از استثناهای «Can not perform this action after onSaveInstanceState» جلوگیری میکند b/110987825
آرگومانهای ایمن
- تغییرات اساسی: نویسههای غیرالفباعددی در نامهای کنش و آرگومان با نگارش شتری در نامهای روش NavDirections مربوطه جایگزین خواهند شد
- E.g.
DemoController.indexwill becomesetDemoControllerIndexb/79995048 - برای مثال،
action_show_settingsبهactionShowSettingsتبدیل میشود b/79642240
- E.g.
- تغییر اساسی: اکنون آرگومانها بهطور پیشفرض غیرتهی درنظر گرفته میشوند. برای مجاز کردن مقادیر تهی در آرگومانهای رشتهای و قابلبستهبندی،
app:nullable="true"b/79642307 را اضافه کنید - اکنون میتوانید از
app:type="long"با defaultValues در قالب «123L» استفاده کنید b/79563966 - اکنون آرگومانهای Parcelable بااستفاده از نام کلاس کاملاً واجدشرایط برای
app:typeپشتیبانی میشوند. تنها مقدار پیشفرض پشتیبانیشده"@null"b/79563966 است - کلاسهای Args اکنون
equals()وhashCode()را پیادهسازی میکنند b/79642246 - اکنون میتوان افزونه Safe Args را روی پروژههای کتابخانه اعمال کرد b/80036553
- اکنون میتوان افزایه Safe Args را برای پروژههای ویژگی اعمال کرد b/110011752
رفع اشکالها
- مشکلات مربوط به پیمایش درطول روشهای چرخه حیات Fragment برطرف شد b/109916080
- مشکلات مربوط به پیمایش چندباره در نمودارهای تودرتو برطرف شد b/110178671
- مشکلات هنگام استفاده از
setPopUpToبا اولین مقصد در نمودار برطرف شد b/109909461 - مشکل ارسال همه مقادیر
app:defaultValueبهعنوان رشته برطرف شد b/110710788 - aapt2 همراه با «افزایه Android Gradle» نسخه ۳.۲ بتا ۰۱ اکنون قوانین نگهداری را برای هر مشخصه
android:nameدر فایلهای XML «پیمایش» اضافه میکند b/79874119 - نشت حافظه هنگام جایگزینی FragmentNavigator پیشفرض برطرف شد b/110900142
۲ ژوئیه ۲۰۱۸
نسخههای AndroidX از Lifecycle، Room، و Paging نسخه 2.0.0-beta01 را منتشر میکنند.
چرخه حیات
رفع اشکالها
- قانون proguard مربوط به LifecycleObserver اصلاح شد تا فقط پیادهسازیها حفظ شوند، نه زیرمیاناهای b/71389427
- قوانین ViewModel proguard برای مجاز کردن مبهمسازی و کوچکسازی اصلاح شد
اتاق
تغییرات میانای برنامهسازی کاربردی / رفتار
-
RoomDatabase.Builder.setQueryExecutor()اضافه شد تا امکان سفارشیسازی محل اجرای پُرسمانها فراهم شود - پشتیبانی RxJava2
Observableاضافه شد - پیادهسازیهای DAO و پایگاه داده تولیدشده اکنون نهایی هستند
رفع اشکالها
- Specify class/field name in "cannot find getter for field" error b/73334503
- سازگاری RoomOpenHelper با نسخههای قدیمیتر Room برطرف شد b/110197391
صفحهبندی
رفع اشکالها
- مشکل ناپدید شدن محتوا در برخی موارد پیشافزودن (جایبانها غیرفعال، PositionalDataSource) برطرف شد b/80149146
- (قبلاً در
1.0.1منتشر شده است) خرابیهایی که در آنهاPagedListAdapterوAsyncPagedListDifferنمیتوانستند رویدادهای جابهجایی را علامتگذاری کنند برطرف شد. b/110711937
۲۶ ژوئن ۲۰۱۸
صفحهبندی
Paging 1.0.1 با یک رفع اشکال در runtime منتشر شد. برای پایداری، اکیداً توصیه میکنیم از 1.0.1 استفاده کنید. Paging RxJava2 1.0.1 نیز منتشر شده است و با 1.0.0-rc1 یکسان است.
رفع اشکالها
- خرابیهایی که در آنها
PagedListAdapterوAsyncPagedListDifferنمیتوانستند رویدادهای انتقال را علامتگذاری کنند برطرف شد. b/110711937
WorkManager
WorkManager 1.0.0-alpha04 منتشر شده است.
رفع اشکالها
اکنون
PeriodicWorkRequestها هنگام استفاده از پیادهسازی مبتنی برAlarmManagerبهدرستی زمانبندی مجدد میشوند.رفع خطای احتمالی ANR هنگام زمانبندی مجدد همه کارگران پساز توقف اجباری یا بازراهاندازی. b/110507716
حاشیهنویسیهای پوچپذیری به WorkManager APIهای مختلف اضافه شد. b/110344065
ثبت موارد استثنای جاافتاده که درطول اجرای Worker رخ میدهد. b/109900862
انتقالهای مخرب پایگاه داده درصورتیکه تصمیم بگیرید به نسخه قدیمیتر WorkManager برگردید مجاز شد. b/74633270
مشکل ازکارافتادن انتقال درصورت ایجاد برچسبهای ضمنی تکراری برطرف شد. این مشکل بسیار نادری است که فقط درصورتی رخ میدهد که خودتان از همان قالب برچسب ضمنی استفاده کرده باشید.
۱۹ ژوئن ۲۰۱۸
اتاق
اتاق 1.1.1 آزاد شده است. این نسخهٔ پخش با «اتاق 1.1.1-rc1» یکسان است.
WorkManager
WorkManager 1.0.0-alpha03 منتشر شده است.
رفع اشکالها
شرایط رقابت در پیادهسازی مبتنی بر
AlarmManagerبرطرف شد. b/80346526.مشکل کارهای تکراری هنگام استفاده از
JobSchedulerپساز بازراهاندازی دستگاه برطرف شد.اکنون کارهای دارای راهاندازهای شناسه منبع یکسان محتوا در راهاندازیهای مجدد حفظ میشوند. b/80234744
بهروزرسانیهای اسناد. b/109827628، b/109758949، b/80230748
مشکل ازکارافتادن هنگام قرار دادن مجدد
WorkRequestدر صف برطرف شد. b/109572353.هشدارهای کامپایلر Kotlin هنگام استفاده از وابستگی
work-runtime-ktxبرطرف شد.WorkManager اکنون از
Roomنسخه1.1.1-rc1استفاده میکند.
تغییرات میانای برنامهسازی کاربردی
getStatusesSync()، نسخه همگامWorkContinuation.getStatuses()، اضافه شد.Workerمیتواند بین لغو شروعشده توسط کاربر و توقف موقت درخواستشده توسط سیستمعامل تمایز قائل شود. اگر هر نوع توقفی درخواست شده باشد،Worker.isStopped()مقدارtrueرا برمیگرداند.Worker.isCancelled()returnstruewhen the work has been explicitly cancelled. b/79632247افزودن پشتیبانی از JobParameters#getNetwork() در API 28. این مورد ازطریق
Worker.getNetwork()افشا شده است.Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)اضافه شد تا بتوانید تعداد کارهایی را که میتوان بهJobSchedulerیاAlarmManagerارسال کرد اعمال کنید. این کار کمک میکند تاWorkManagerهمه جایگاههایJobSchedulerدردسترس شما را نگیرد.Added
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)which helps define a range ofJobSchedulerjob ids safe forWorkManagerto use. b/79996760Worker.getRunAttemptCount()تعداد دفعات اجرای فعلی را برایWorkerدادهشده برمیگرداند. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)allows you to enqueue a uniquePeriodicWorkRequests. b/79600647WorkManager.cancelAllWork()همهWorkerها را لغو میکند. کتابخانههایی که بهWorkManagerوابسته هستند میتوانند بااستفاده ازWorkManager.getLastCancelAllTimeMillis()برای پاکسازی بیشتر وضعیت داخلی، زمان آخرین فراخوانی این روش را پُرسمان کنند.
WorkManager.pruneWork()برای برداشتن کارهای تکمیلشده از پایگاه داده داخلی اضافه شد. b/79950952، b/109710758
تغییرات رفتار
- برچسب ضمنی برای همه
WorkRequestها اضافه شد که نام کلاس کاملاً واجدشرایط برایWorkerاست. This allows the ability to removeWorkRequests withouttags or when theidis not available. b/109572351
تغییرات ناگهانی
نام
Worker.WorkerResultبهWorker.Resultتغییر کرد.Worker.onStoppedاکنون پارامتر اضافیisCancelledدارد که وقتیWorkerصریحاً لغو شده باشد، رویtrueتنظیم میشود.
۷ ژوئن ۲۰۱۸
ناوبری 1.0.0-alpha02 منتشر شده است.
پیمایش
تغییرات رفتار
FragmentNavigatorاکنون ازsetReorderingAllowed(true)استفاده میکند. b/109826220اکنون Navigation آرگومانهای تجزیهشده از نشانیهای وب پیوند عمیق را URLDecodes میکند. b/79982454
رفع اشکالها
IllegalStateExceptionهنگام فراخوانی پیمایش از روشهای چرخه حیات Fragment برطرف شد. b/79632233اکنون «ناوبری» به «کتابخانه پشتیبانی» نسخه ۲۷.۱.۱ وابسته است تا لرزش تصویر هنگام استفاده از پویانماییها برطرف شود. b/80160903
IllegalArgumentExceptionهنگام استفاده از defaultNavHost="true" بهعنوان قطعه فرزند برطرف شد. b/79656847StackOverflowErrorهنگام استفاده از NavDeepLinkBuilder برطرف شد. b/109653065IllegalArgumentExceptionهنگام پیمایش به عقب به نمودار تودرتو برطرف شد. b/80453447مشکل همپوشانی Fragment هنگام استفاده از
launchSingleTopبرطرف شد. b/79407969اکنون پیمایش پشته قبلیهای مصنوعی صحیح را برای گرافهای تودرتو میسازد. b/79734195
اکنون NavigationUI هنگام استفاده از گراف تودرتو بهعنوان
MenuItem، مورد صحیح را برجسته میکند. b/109675998
تغییرات میانای برنامهسازی کاربردی
مشخصه
clearTaskبرای کنشها و API مرتبط درNavOptionsمنسوخ شده است. b/80338878مشخصه
launchDocumentبرای کنشها و API مرتبط درNavOptionsمنسوخ شده است. b/109806636
۲۴ مه ۲۰۱۸
WorkManager 1.0.0-alpha02 منتشر شده است.
WorkManager
رفع اشکالها
NullPointerExceptionدرState.isFinished()برطرف شد. b/79550068مشکلی که باعث میشد
WorkerدرApplication.onCreate()دوباره زمانبندی شود برطرف شد. b/79660657مشکلی که باعث میشد بتوانید کارهای بیشتری از آنچه سیستمعامل اجازه میدهد زمانبندی کنید برطرف شد. b/79497378
پاکسازی wake lock مرتبط با
Workerبه رشته پسزمینه منتقل شد.اکنون پیادهسازی
AlarmManagerپساز تکمیل همه کارهای معلقه بهدرستی پاکسازی میشود.پرسوجوهای SQL پاکسازی که بر زبانهای غیرانگلیسی تأثیر میگذاشتند برطرف شد. b/80065360
پشتیبانی از
floatدرDataاضافه شد. b/79443878Data.Builder.putAll()اکنون نمونهای ازBuilderرا برمیگرداند. b/79699162More javadoc and fixes in documentation. b/79691663
تغییرات میانای برنامهسازی کاربردی
Workers can react to being stopped. ازWorker.isStopped()میتوان برای بررسی اینکه آیاWorkerمتوقف شده است یا نه استفاده کرد. ازWorker.onStopped()میتوان برای انجام عملیات پاکسازی سبک استفاده کرد.Worker.getTags()API یکSetاز برچسبهای مرتبط باWorkerرا برمیگرداند.javax.time.Durationسربار برای میاناهای برنامهسازی کاربردی که ترکیبی از مدت وTimeUnitهستند اضافه شد. این مورد توسط@RequiresApi(26)محافظت میشود.
WorkManagerافزونه از بستهandroidx.work.ktxبه بستهandroidx.workمنتقل شده است. افزونههای قدیمی منسوخ شدهاند و در نسخههای بعدی برداشته خواهند شد.
Configuration.withExecutor()منسوخ شده است. درعوض ازConfiguration.setExecutor()استفاده کنید.
۱۶ مه ۲۰۱۸
Paging RxJava2 1.0.0-rc1 و Room 1.1.1-rc1 منتشر شدهاند. اگر از انتقال استفاده میکنید، اکیداً توصیه میکنیم بهجای 1.1.0 از Room 1.1.1-rc1 استفاده کنید.
اتاق
اشکالی که باعث میشد Room مقداردهی اولیه پساز انتقال را بهدرستی انجام ندهد برطرف شد b/79362399
صفحهبندی
Paging rxjava2 درحال انتقال به نامزد انتشار است و هیچ تغییری نسبت به نسخه آلفای اولیه ندارد.
۸ مه ۲۰۱۸
Paging 1.0, Navigation and WorkManager Alphas, Room 1.1, AndroidX
Paging 1.0.0 و Room 1.1.0 منتشر شدند،
همراه با نسخههای آلفا برای دو مؤلفه معماری جدید - Navigation و WorkManager.
Paging و Room از زمان آخرین نامزدهای انتشار تغییری نکردهاند.
کتابخانه جدید: پیمایش
Navigation چارچوبی برای ساختن ناوبری درونبرنامه ارائه میدهد. این نسخهٔ پخش اولیه 1.0.0-alpha01 است.
کتابخانه جدید: WorkManager
WorkManager زمانبندی و اجرای کار پسزمینهای تضمینشده و آگاه از محدودیت را ساده میکند. این نسخهٔ پخش اولیه
1.0.0-alpha01 است.
AndroidX
اجزای معماری درحال انتقال به AndroidX هستند، ازجمله نامهای بسته بهروزشده، نامهای آرتیفکت، و وابستگیها به دیگر کتابخانههای AndroidX.
این موارد تحت نسخه 2.0.0-alpha1 برای استفاده همراه با دیگر کتابخانههای AndroidX منتشر شدهاند.
افزونههای Kotlin
ViewModel، ReactiveStreams، و Sqlite (قبلاً مؤلفه «پایگاه داده» Room) همگی دارای کتابخانههای افزونه Kotlin هستند که بهعنوان بخشی از نسخه آلفای AndroidX اضافه شدهاند. علاوهبراین، Navigation و WorkManager شامل پیمانههای ktx- هستند. هرکدام از این مدولهای افزونه را میتوانید در افزودن مؤلفهها پیدا کنید.
۲ مه ۲۰۱۸
- نامزد انتشار نسخه ۱.۱.۰ Room
- اتاق
1.1.0-rc1آزاد شده است.
رفع اشکالها
- اکنون Room با Kotlin
1.2.40سازگار است. b/78328708
۱۹ آوریل ۲۰۱۸
نامزد انتشار صفحهبندی
صفحهبندی 1.0.0-rc1 و اتاق 1.1.0-beta3 آزاد شدند.
صفحهبندی
مشکل شناختهشده دیگری نداریم و ویژگی جدیدی برای نسخه
Paging 1.0.0 برنامهریزی نشده است. لطفاً پروژههایتان را ارتقا دهید تا از 1.0.0-rc1 استفاده کنید و
به ما کمک کنید آن را آزمایش کنیم تا بتوانیم 1.0.0 را بهصورت کاملاً پایدار عرضه کنیم.
هیچ تغییری در این نسخه پخش وجود ندارد، این نسخه پخش همانند 1.0.0-beta1 است.
اتاق
رفع اشکالها
- رفع خطای کامپایل زمانی که Kotlin POJO به موجودیت رابطهای ارجاع میدهد که در Java تعریف شده است b/78199923
۵ آوریل ۲۰۱۸
Room 1.1.0-beta2، Paging 1.0.0-beta1، و Paging RxJava 1.0.0-alpha1 منتشر شدهاند.
صفحهبندی برای مدت کوتاهی در نسخه بتا خواهد بود و سپس به نامزد انتشار ارتقا مییابد.
ما قصد نداریم تغییرات بیشتری در میانای برنامهسازی کاربردی برای Paging 1.0 ایجاد کنیم و مانع هرگونه تغییر در میانای برنامهسازی کاربردی بسیار بالا است.
پشتیبانی Alpha RxJava2 برای «صفحهبندی» بهعنوان یک ماژول اختیاری جداگانه (android.arch.paging:rxjava2:1.0.0-alpha1) منتشر شده است
و تا زمانی که پایدار شود، بهطور موقت بهصورت جداگانه نسخهبندی خواهد شد.
این کتابخانه جدید جایگزین RxJava2 برای LivePagedListBuilder ارائه میدهد که قادر به ساختن
Observable و Flowable است و بهجای Executor، Scheduler میگیرد:
کاتلین
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اضافه شده است.
تغییرات میانای برنامهسازی کاربردی
تغییرات API برای شفافسازی نقش مجریان در سازندگان:
نام
setBackgroundThreadExecutor()بهsetFetchExecutor()تغییر کرد (درPagedList.BuilderوLivePagedListBuilder)نام
setMainThreadExecutor()بهsetNotifyExecutor()تغییر کرد (درPagedList.Builder).
عضو ثابت
PagedList.mCallbacksخصوصی شد.
رفع اشکالها
LivePagedListBuilderبار اولیهPagedListرا در مجری مشخصشده راهاندازی میکند، بهجای استخر رشته IO مؤلفههای Arch.رفتار باطلسازی در پوشانندههای داخلی
DataSource(که برای پیادهسازیDataSource.map، و همچنین بار کردنPositionalDataSourceبا جایبان غیرفعالشده استفاده میشود) اصلاح شد b/77237534
اتاق
رفع اشکالها
اشکال مهمی در پیادهسازیهای Rx
SingleوMaybeدر Room برطرف شد که در آن پرسوجو را زودتر از موعد بازیافت میکرد و اگر بیشاز ۱ ناظر به نمونههایSingleیاMaybeبرگرداندهشده اضافه میکردید، مشکلاتی ایجاد میکرد. b/76031240RoomDatabase.clearAllTables will not
VACUUMthe database if it is called inside a transaction. b/77235565
۲۱ مارس ۲۰۱۸
Room 1.1.0-beta1، Paging 1.0.0-alpha7، و Lifecycles 1.1.1 منتشر شدند.
اتاق
تغییرات میانای برنامهسازی کاربردی
- براساس بازخورد «بازبینی میانای برنامهسازی کاربردی»،
@RawQueryدیگر ارسالStringرا بهعنوان پارامتر پُرسمان نمیپذیرد. باید از SupportSQLiteQuery استفاده کنید. (برای ایجاد آسان نمونهای از SupportSQLiteQuery با پشتیبانی از آرگومان، SimpleSQLiteQuery را ببینید). - روش fallbackToDestructiveMigrationFrom مربوط به RoomDatabase.Builder اکنون بهجای
vararg Integer،vararg intرا میپذیرد.
رفع اشکالها
RoomDatabase.clearAllTables اکنون با تنظیم نقطه بازرسی WAL و
VACUUMکردن پایگاه داده، سعی میکند فضا را به سیستمعامل برگرداند.@RawQueryاکنون هر Pojo را برای ویژگیobservedEntitiesمیپذیرد، بهشرطی که Pojo ازطریق فیلدهایEmbeddedیاRelationبه یک یا چند نهاد ارجاع دهد. b/74041772صفحهبندی: پیادهسازی DataSource اتاق اکنون وابستگیهای چندجدولی (مانند روابط و پیوندها) را بهدرستی مدیریت میکند. قبلاً این موارد نمیتوانستند نتایج جدید را راهاندازی کنند یا ممکن بود کامپایل نشوند. b/74128314
چرخههای حیات
فقط یک تغییر کوچک: android.arch.core.util.Function از arch:runtime به arch:common منتقل شده است. این کار امکان استفاده بدون وابستگی زمان اجرا را فراهم میکند، مثلاً در paging:common زیر.
lifecycle:common وابستگی lifecycle:runtime است، بنابراین این تغییر مستقیماً بر lifecycle:runtime تأثیر نمیگذارد، بلکه فقط بر واحدهایی تأثیر میگذارد که مستقیماً به lifecycle:common وابسته هستند، مانند Paging.
صفحهبندی
Paging 1.0.0-alpha7 همراه با Lifecycles 1.1.1 منتشر میشود. ازآنجاییکه Paging alpha7 به انتقال کلاس Function که در بالا ذکر شد بستگی دارد، باید وابستگی lifecycle:runtime را به android.arch.lifecycle:runtime:1.1.1 بهروز کنید.
قرار است Paging alpha7 آخرین نسخه قبلاز انتشار نسخه بتای Paging باشد.
تغییرات میانای برنامهسازی کاربردی
- اکنون اشیای
DataSource.LoadParamsسازنده عمومی دارند و اشیایDataSource.LoadCallbackاکنون انتزاعی هستند. This enables wrapping aDataSourceor directly testing aDataSourcewith a mock callback. b/72600421 - نگاشتکنندهها برای DataSource و DataSource.Factory
map(Function<IN,OUT>)به شما امکان میدهد نتایج بارشده توسطDataSourceرا تبدیل، بستهبندی، یا تزئین کنید.mapByPage(<List<IN>,List<OUT>>)همین کار را برای پردازش دستهای فعال میکند (برای مثال، اگر موارد بارشده از SQL نیاز به پُرسمان اضافی از پایگاه داده جداگانهای داشته باشند، این کار میتواند بهصورت دستهای انجام شود.)
PagedList#getDataSource()is added as a convenience method b/72611341- همه کلاسهای منسوخشده از میانای برنامهسازی کاربردی برداشته شدهاند، ازجمله بقایای بسته
recyclerview.extensionsوLivePagedListProvider. DataSource.Factoryاز میانای به کلاس انتزاعی تغییر کرده است تا عملکرد نقشه فعال شود.
رفع اشکالها
- Builders به final تغییر کرد. b/70848565
- پیادهسازی Room
DataSourceاکنون برای رسیدگی به پُرسمانهای چندجدولی اصلاح شده است - این اصلاح در Room 1.1.0-beta1 گنجانده شده است، بالا را ببینید. - اشکالی برطرف شد که در آن اگر جایبانها فعال باشند و اندازه کل مضرب دقیقی از اندازه صفحه باشد،
BoundaryCallback.onItemAtEndLoadedبرایPositionalDataSourceفراخوانی نمیشد.
۲ مارس ۲۰۱۸
اتاق 1.1.0-alpha3 آزاد شده است. این آخرین نسخه آلفای برنامهریزیشده برای
Room 1.1.0 است.
تغییرات میانای برنامهسازی کاربردی
روشهای
addObserverوremoveObserverمربوط به InvalidationTracker اکنون همگام هستند و باید در رشته غیرمیانای کاربر فراخوانی شوند. این کار از برخی شرایط رقابتی هنگام مشاهده جدولها جلوگیری میکند.روش
clearAllTables()جدیدی در کلاس RoomDatabase وجود دارد که همه محتویات جدول را کوتاه میکند. b/63807999
SupportSQLiteQueryاکنون روشgetArgCount()دارد که تعداد پارامترهای پُرسمان را برمیگرداند. b/67038952
رفع اشکالها
@RawQueryاکنون بهدرستی برای پُرسمانهای صفحهبندی پشتیبانی میشود. b/72600425اکنون Room کلاسهای
Daoتولیدشده را بهدرستی نامگذاری میکند تا از تداخل نام در شرایطی که ۲ یا چند میانایDaoکلاسهای داخلی در یک بسته باشند و نام یکسانی داشته باشند جلوگیری شود. b/73536380انواع فیلد عمومی در
Pojoبهدرستی بهعنوان عضو کلاس گسترشدهنده تجزیه میشود. b/73534868پارامترهای پُرسمان در میاناهای
Daoکه از مصنوعات وابستگی به ارث برده شدهاند اکنون بهدرستی تجزیه میشوند. b/68118746پرسوجوهای تولیدشده برای
@Relationاکنون بهدرستی از نامهای فیلد فرار میکنند. b/70925483
۲۷ فوریه ۲۰۱۸
صفحهبندی 1.0.0-alpha6 همراه با نسخه ۲۷.۱.۰ «کتابخانه پشتیبانی» منتشر شده است.
ListAdapter و چند کلاس مرتبط از «کتابخانه صفحهبندی» مستقیماً به Recyclerview منتقل شدهاند و نام چند کلاس نیز تغییر کرده است تا عملکرد کلاسهای خاصی واضحتر شود. این نسخه آلفای صفحهبندی احتمالاً آخرین نسخهای است که تغییرات اساسی در API دارد.
تغییرات میانای برنامهسازی کاربردی
- کلاسها به recyclerview-v7 منتقل شدند:
ListAdapter
- کلاسها تغییر نام دادهاند و به recyclerview-v7 منتقل شدهاند:
-
ListAdapterHelper->AsyncListDiffer -
ListAdapterConfig->AsyncDifferConfig -
DiffCallback->DiffUtil.ItemCallback
-
- کلاسهای تغییرنامیافته در paging-runtime:
-
PagedListAdapterHelper->AsyncPagedListDiffer
-
کلاسهایی که منتقل شدند در کنار RecyclerView، مستقل از «کتابخانه صفحهبندی»، مفید بودند. این یعنی میتوان از آنها بدون وابستگی به نسخه آلفای Paging استفاده کرد، اما همچنین یعنی برنامههایی که از Paging استفاده میکنند باید همزمان به Alpha 6 و Support Library 27.1.0 ارتقا یابند.
** راهنمای انتقال برای Paging Alpha6: **
- بهروزرسانی وابستگیهای صفحهبندی و recyclerview به
android.arch.paging:runtime:1.0.0-alpha6وcom.android.support:recyclerview-v7:27.1.0- این کارها باید همزمان انجام شود، زیرا ListAdapter از Paging به RecyclerView منتقل شده است
- بهروزرسانی هرگونه ارجاع
ListAdapterHelperبهAsyncListDiffer-
getItem(index)/getItemCount()برداشته شدهاند تا از الگوی فراخوانیgetCurrentList().getItem(index)وgetCurrentList().size()که صریحتر هستند استفاده شود.
-
- هرگونه ارجاع به
ListAdapterConfigرا بهAsyncDifferConfigبهروز کنید - بهروزرسانی هرگونه ارجاع
DiffCallbackبهDiffUtil.IttemCallback - بهروزرسانی هرگونه ارجاع
PagedListAdapterHelperبهAsyncPagedListDiffer - بهروزرسانی مرجعهای
setList()بهsubmitList()- renamed to clarify async nature of list diffing
رفع اشکالها
- مشکل ارسال موقعیت اولیه نادرست به بار اولیه درصورت غیرفعال بودن جایبانها برطرف شد. b/73513780
۱۵ فوریه ۲۰۱۸
اتاق 1.1.0-alpha2 آزاد شده است.
ویژگیهای جدید
اکنون Room از باز کردن پایگاه داده در حالت ثبت پیشنویس پشتیبانی میکند. در این حالت، نوشتنهای شما دیگر پرسمانهای خواندن شما را مسدود نخواهد کرد. هرچند این حالت حافظه بیشتری مصرف میکند (بهدلیل اتصالات متعدد)، معمولاً سریعتر است. بهطور پیشفرض، اگر دستگاه
API 16یا بالاتر باشد و دستگاهی با حافظه کم نباشد، Room از WAL استفاده خواهد کرد. میتوانید این رفتار را بااستفاده از روشsetJournalMode()درRoomDatabase.Builderکنترل کنید. b/67757002پشتیبانی Guava: Room اکنون از برگرداندن Guava
Optional<T>یاListenableFuture<T>در پُرسمانهایDAOپشتیبانی میکند. برای استفاده ازListenableFuture<T>، باید مصنوعguavaرا از «اتاق» (android.arch.persistence.room:guava:1.1.0-alpha2) وارد کنید.Room اکنون از برگرداندن
java.util.Optional<T>از پُرسمانهایDAOپشتیبانی میکند.روشهای میانای دارای پیادهسازیهای پیشفرض اکنون در
@Transactionروش در کلاسهایDAOپشتیبانی میشود. این ویژگی هم برایJava 8و هم برایKotlinکار میکند. b/72416735
رفع اشکالها
سازندههای دارای
@Relationباعث خطای کامپایل نمیشوند اگر سازنده دیگری وجود داشته باشد که بتوان از آن استفاده کرد. b/72884434نامهای جدول که با
'در روشهای@Queryگریز داده شدهاند اکنون بهدرستی برای ردیاب باطلسازی گریز داده میشوند. b/72366965Room اکنون از حاشیهنویسیهای Kotlin
@Metadataبرای خواندن ساختار کلاس درطول پردازش حاشیهنویسی استفاده میکند. این یعنی حتی اگر pojo از وابستگی به ارث برده شود، نامهای پارامتر سازنده آن بهدرستی خوانده میشود. b/67181813مشکل مربوط به پیدا کردن مسیرهای انتقال تنزل رفع شد. b/72153525
انواع ستون غیرپیشفرض اکنون هنگام انتقال از پایگاه داده موجود به Room بهدرستی مدیریت میشوند. b/71953987
Room اکنون بهدرستی فیلدهای
boolean?را در کلاسهای Kotlin حفظ میکند. b/72786402
۲۲ ژانویه ۲۰۱۸
Lifecycles 1.1.0، Room 1.1.0-alpha1، و Paging 1.0.0-alpha5 منتشر شدند.
Lifecycle 1.1.0
تغییرات بستهبندی
اکنون وابستگیهای جدید و بسیار کوچکتری دردسترس است:
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
تغییرات میانای برنامهسازی کاربردی
LifecycleActivityوLifecycleFragmentمنسوخشده اکنون برداشته شدهاند - لطفاً ازFragmentActivity،AppCompatActivity، یا پشتیبانیFragmentاستفاده کنید.-
@NonNullحاشیهنویسی بهViewModelProvidersوViewModelStoresاضافه شد - سازنده
ViewModelProvidersمنسوخ شده است - لطفاً مستقیماً از روشهای ایستا استفاده کنید -
ViewModelProviders.DefaultFactoryمنسوخ شده است - لطفاً ازViewModelProvider.AndroidViewModelFactoryاستفاده کنید - روش ایستا
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)برای بازیابیFactoryایستا مناسب برای ایجاد نمونههایViewModelوAndroidViewModelاضافه شده است.
Room 1.1.0-alpha1
ویژگیهای جدید
RawQuery: این API جدید به روشهای@Daoاجازه میدهد SQL را بهعنوان پارامتر پُرسمان دریافت کنند b/62103290، b/71458963fallBackToDestructiveMigrationsFrom: این میانای برنامهسازی کاربردی جدید درRoomDatabase.Builderامکان کنترل دقیقتر بر نسخههای طرحواره شروعی را که انتقالهای مخرب از آنها مجاز است فراهم میکند (درمقایسه با fallbackToDestructiveMigration) b/64989640- Room اکنون فقط از میاناهای برنامهسازی کاربردی صفحهبندی جدیدتر (alpha-4+) پشتیبانی میکند و پشتیبانی از
LivePagedListProviderمنسوخشده را متوقف کرده است. برای استفاده از Room alpha جدید، باید از صفحهبندیalpha-4یا بالاتر استفاده کنید و اگر قبلاً این کار را نکردهاید، ازLivePagedListProviderبهLivePagedListBuilderبروید.
رفع اشکالها
- پشتیبانی از انواع Kotlin Kapt بهبود یافته است. b/69164099
- ترتیب فیلدها دیگر طرحواره را نامعتبر نمیکند. b/64290754
Paging 1.0.0-alpha5
رفع اشکالها
- Fix page loading when placeholders are disabled b/70573345
- ثبت گزارش اضافی برای ردیابی اشکال IllegalArgumentException b/70360195 (و اصلاح حدسی در Room-side)
- اصلاحات کد نمونه Javadoc b/70411933، b/71467637
۱۱ دسامبر ۲۰۱۷
پیجینگ alpha4-1 منتشر شده است. این نسخه رفع اشکال کوچکی برای Paging alpha 4 است.
رفع اشکالها
- Don't check callback parameters for invalid data sources. b/70353706, b/70360195
۷ دسامبر ۲۰۱۷
Paging alpha4 با تغییرات و اضافات قابلتوجهی منتشر شده است که بیشتر
شبکه و موارد استفاده از شبکه + پایگاه داده را هدف قرار میدهد.
تغییرات میانای برنامهسازی کاربردی
DataSourceاکنون یک میانای برنامهسازی کاربردی ناهمگام است تا صفحهبندی مستقیماً از شبکه آسانتر شود:- نقطه ورودی تکی برای اندازه و دادههای اولیه
- با نگه داشتن تماس برگشتی و ارسال آن در زمانی دیگر، از تکرار شبکه پشتیبانی میکند
- فراخوانهای برگشتی Threadsafe امکان بار کردن ناهمگام را برای ایجاد
PagedListبا پشتیبانی شبکه واحد در رشته میانای کاربر فراهم میکند. - رفتار خطای واضحتر درباره پارامترهای بار اولیه
TiledDataSourceبهPositionalDataSourceتغییر نام داده است تا نمایهسازی مبتنی بر موقعیت آن و این واقعیت را که وقتی جایبانها غیرفعال هستند کاشیبندی نمیشود نشان دهد.PageKeyedDataSourceبرای پشتیبانی از کدهای بعدی/قبلی جاسازیشده در بارگیریهای صفحه شبکه اضافه شده است. نامKeyedDataSourceبهItemKeyedDataSourceتغییر کرد تا تفاوت واضح باشد.LivePagedListBuilderوDataSource.FactoryجایگزینLivePagedListProviderمیشوند. سازنده همان قابلیت را با سفارشیسازی بیشتر و پیشفرضهای سادهتر ارائه میدهد. کارخانه اجازه میدهد کد تولیدDataSourceمستقل ازLiveDataباقی بماند.PagedList.BoundaryCallbackبرای مورد استفاده پایگاه داده + شبکه اضافه شد.سازنده
PagedList.BuilderاکنونDataSource+PagedList.Configرا میگیرد، بیشتر شبیهLivePagedListBuilderاست، و عملگر لوزی را در زبان Java یا انواع استنباطشده را در Kotlin مجاز میکند.PagedList.getConfig()اضافه شد وPagedList.Configاکنون ویژگیهای عضو عمومی دارد.KeyedDataSource.loadBefore()دیگر انتظار ندارد نتایج برگردانده شود.PagedListAdapter.onCurrentListChanged()added to listen for updates on which PagedList is being displayed.
رفع اشکالها
- رفع IndexOutOfBoundsException در PagedListAdapter(Helper) b/67883658
۱.۰.۰ - ۶ نوامبر ۲۰۱۷
همه مؤلفههای اصلی (بهجز Paging) اکنون 1.0.0 هستند. این دقیقاً همان نسخه rc1 است، بهجز یک تغییر در کتابخانه reactivestreams.
رفع اشکالها
LiveDataReactiveStreamsاکنون مشخصات Reactive Streams را بهدرستی پیادهسازی میکند. b/67999342
نامزد انتشار - ۱۸ اکتبر ۲۰۱۷
همه آرتیفکتهای اصلی (بهجز Paging) اکنون 1.0.0-rc1 هستند.
مشکل شناختهشده یا ویژگی جدید دیگری برای نسخه 1.0.0 برنامهریزی نکردهایم. لطفاً پروژههایتان را ارتقا دهید تا از 1.0.0-rc1 استفاده کنند و به ما کمک کنید
تا آن را در شرایط واقعی آزمایش کنیم تا بتوانیم نسخه 1.0.0 را با پایداری کامل عرضه کنیم.
تغییر رفتار
- با این نسخه پخش، اکنون وقتی
onSaveInstanceStateفراخوانی میشود،Lifecycle.Event#ON_STOPارسال میشود (قبلاً فقط بهعنوانCREATEDعلامتگذاری میشد بدون اینکهON_STOPارسال شود). میتوانید در سند Lifecycles اطلاعات بیشتری درباره آن کسب کنید.
رفع اشکالها
اتاق:
- Room اکنون به جدیدترین آرتیفکت xerial وابسته است که مشکلات
OutOfMemoryرا درطول کامپایل کردن برطرف میکند. b/62473121 - اکنون میتوان روشهای
Queryرا با@Transactionحاشیهنویسی کرد. برای جزئیات، اسناد مرجع در@Transactionرا ببینید. b/65112315 - کلاس
StringUtilدر Room از API عمومی برداشته شده است (هرگز قرار نبود بهعنوان API عمومی استفاده شود).
- Room اکنون به جدیدترین آرتیفکت xerial وابسته است که مشکلات
چرخههای حیات:
LiveDataproperly works when Activity is partially covered on API < 24. b/65665621OnLifecycleEventروشها در کلاسهای والد اکنون بهدرستی فراخوانی میشوند یا درصورت عدم امکان، هشداری درطول کامپایل چاپ میشود. b/63474615Lifecycle اکنون
WeakReferenceرا به LifecycleOwner برمیگرداند تا از نشت LifecycleOwner درصورتیکه Lifecycle بیشتر از حد معمول در حافظه نگه داشته شود جلوگیری کند (این فقط یک اقدام احتیاطی است، همچنان باید مراقب باشید کهLifecycleنشت نکند).
۹ اکتبر ۲۰۱۷
Paging alpha-3 منتشر شده است؛ که آن را با نسخه beta 2
Lifecycles و Room سازگار میکند.
رفع اشکالها
- بهبود اسناد صفحهبندی.
۵ اکتبر ۲۰۱۷
همه آرتیفکتهای اصلی (بهجز Paging) اکنون beta 2 هستند.
نسخه جدیدی از Paging در این نسخه پخش وجود ندارد.
رفع اشکالها
چرخههای حیات:
LiveDataReactiveStreamsnow properly unsubscribes from the source publisher whenLiveDatais not active. b/62609183- رویدادهای چرخه حیات بهدرستی به کلاسهای والد منتشر میشوند، وقتی کلاس والد از ماژول دیگری باشد. b/63474615
- LiveData properly handles observers when they unsubscribe during subscrition creation. b/66337741
FullLifecycleObserverبرای مصنوع زبان Java 8 اکنون در درخت وابستگی دردسترس است. b/66525578برای proguard، لطفاً خطوط زیر را به فایل proguard خود اضافه کنید. (وقتی نسخه ۱.۰.۰ عرضه شود، این کار لازم نخواهد بود)
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
اتاق:
- اکنون Room وقتی Pojo برگرداندهشده در روش
@Queryفیلد@NonNullداشته باشد که با هیچکدام از ستونهای پاسخ پرسمان مطابقت نداشته باشد، در زمان ترجمه خطا چاپ میکند. اگر فیلد@Nullableباشد، Room only فقط هشدار چاپ میکند. b/67115337 - Room اکنون نمایهها را در نسخههای جدیدتر سیستمعامل اعتبارسنجی میکند. b/63132683
- اگر چند سازنده منطبق در Pojo وجود داشته باشد، Room بهطور پیشفرض سازنده بدون آرگومان را انتخاب میکند. b/67353427
- کلیدهای اصلی تکستونی میتوانند
Nullableباشند اگرIntegerیاLongباشند. b/67086876 - ردیاب ابطال بهدرستی ورود مجدد در حالت آزمایشی را مدیریت میکند. b/65471397
- Room اکنون در زمان ترجمه، نویسههای نامعتبر را در نام ستونها و جدولها بررسی میکند (نویسههای نامعتبر:
`،"). b/64749111
- اکنون Room وقتی Pojo برگرداندهشده در روش
۲۱ سپتامبر ۲۰۱۷
با این نسخهٔ پخش، همه ماژولهای Architecture Components حداقل به beta 1 میرسند
(بهجز Paging Library جدید که alpha 2 است).
قصد نداریم تغییرات بیشتری در میانای برنامهسازی کاربردی ایجاد کنیم. ممکن است تغییرات برنامهریزینشدهای رخ دهد، اما
احتمال تغییر هرگونه API قبلاز نسخه پایدار 1.0.0 بسیار کم است و بعید است اتفاق بیفتد.
- LifecycleActivity و LifecycleFragment قبلاز نسخه پایدار
1.0.0برداشته خواهند شد. هنگام استفاده از «کتابخانه پشتیبانی» نسخه26.1.0یا جدیدتر، به آنها نیازی نیست.
برخلاف مرحله آلفا، مرحله بتا برای مدت بسیار کوتاهی برنامهریزی شده است.
تغییرات نسخه
- «افزونههای چرخه حیات» و Room اکنون
beta 1هستند - اکنون پیجینگ
alpha 2است - هیچ تغییری در Lifecycles (زمان اجرا، مشترک) و Arch Core (مشترک) ایجاد نشده است. هر دو این مصنوعات
از ۱۳ سپتامبر نسخه
1.0.0هستند.
خروجیهای ساختاریافته جدید
چرخههای حیات اکنون مصنوع جدیدی بهنام
common-java8دارند. این آرتیفکت حاوی میانای جدیدی بهنام DefaultLifecycleObserver است که پیادهسازیهای پیشفرضی برای همه روشهای Lifecycle دارد. اگر از زبان Java 8 استفاده میکنید، باید این آرتیفکت را به حاشیهنویسیها ترجیح دهید.- بهدلیل وجود اشکال در
beta1، باید وابستگی صریحی به مدولandroid.arch.lifecycle:common:1.0.1اضافه کنید تا بتوانید از مصنوع جدیدcommon-java8استفاده کنید. این مشکل درbeta2برطرف خواهد شد.
- بهدلیل وجود اشکال در
تغییرات بستهبندی
-
android.arch.persistence.room.dbبهandroid.arch.persistence.dbمنتقل شد android.arch.persistence.room.db-implمنتقل شد و نام آن بهandroid.arch.persistence.db-frameworkتغییر کرد
هر دوی این آرتیفکتها ازقبل وابستگی به Room دارند، بنابراین، مگر اینکه مستقیماً از آنها استفاده میکردید، نباید نیازی به تغییر چیزی در فایلهای ساخت خود داشته باشید.
تغییرات میانای برنامهسازی کاربردی
اتاق:
- حاشیهنویسی @ColumnInfo اکنون از تنظیم مقابله در ستون پشتیبانی میکند. b/62007004
- اکنون فیلدهای
transientبهطور پیشفرض نادیده گرفته میشوند، مگراینکه با@ColumnInfo،@Embedded، یا@Relationحاشیهنویسی شده باشند. b/62600692 - Primary Keys must be annotated with
@NonNullunless they are auto generated. b/64292391- این تغییر ممکن است به انتقال طرحواره نیاز داشته باشد. بابت مشکل پیشآمده متأسفیم.
- حاشیهنویسی راحتی جدیدی (@Transaction) اضافه شد که
روش
DAOرا لغو میکند و آن را در تراکنش اجرا میکند.
پشتیبانی از پایگاه داده SQLite:
- تغییرات API در پیکربندی پایگاه داده. b/65349673 b/65499876
صفحهبندی:
- اسناد صفحهبندی با مثالهای بیشتر و حاشیهنویسیهای رشتهای بهبود یافته است.
رفع اشکالها
- اتاق:
- رشتههای چندخطی Kotlin در روشهای
@Queryبهدرستی مدیریت میشوند. b/65809374
- رشتههای چندخطی Kotlin در روشهای
- صفحهبندی:
- آرتیفکت صفحهبندی دیگر به junit وابسته نیست. b/65690261
1.0.0 Alpha 9-1 - ۱۳ سپتامبر ۲۰۱۷
این یک نسخه اصلی است که در آن مصنوعات چرخه حیات اصلی (زمان اجرا، مشترک) و هسته معماری (مشترک)
به نسخه پایدار 1.0.0 میرسند.
همراه با این تغییر، «کتابخانه پشتیبانی» نسخه ۲۶.۱.۰ اکنون به این کتابخانهها وابسته است. اکنون هر دو AppCompatActivity و Support Fragment میانای LifecycleOwner را پیادهسازی میکنند.
این نسخهٔ پخش همچنین به «کتابخانه پشتیبانی» 26.1.0 وابسته است تا از یکپارچهسازی جدید بهره ببرد.
کتابخانه جدید: صفحهبندی
این نسخه همچنین شامل کتابخانه جدیدی بهنام Paging است که امکان بار کردن آسان مجموعههای داده بزرگ
در RecyclerView را بهصورت تکهتکه درصورت لزوم فراهم میکند. Paging بهعنوان alpha1 منتشر شده است
و چرخه انتشار خودش را خواهد داشت.
تغییرات میانای برنامهسازی کاربردی
- کلاسهای زیر منسوخ شدهاند و در نسخهٔ پخش آتی برداشته خواهند شد:
رفع اشکالها
اگر برنامه حاشیهنویسی را در مسیر کلاس داشته باشد، کلاسهای تولیدشده اکنون با
@Generatedحاشیهنویسی میشوند. b/35754819اشکال مقایسه ناظر MediatorLiveData برطرف شد. b/64413274
اکنون پُرسمانهای SQLite
WITHبا [LiveData] پشتیبانی میشود. [ref-LiveData] b/62510164اشکالی که در آن InvalidationTracker درصورت مشاهده بیشاز ۱ جدول، فهرست درست را ارسال نمیکرد برطرف شد. b/65099281
اشکالی که باعث میشد Room فایلهای متفاوتی در Windows تولید کند برطرف شد. b/64470691
اکنون LifecycleObservers در بسته ریشه پشتیبانی میشود. b/62310817
1.0.0 Alpha 9 - ۱۶ اوت ۲۰۱۷
رفع اشکالها
- اشکالی در LiveData برطرف شد که در آن وقتی اولین Observer از روش
onChangedخود برداشته میشد، دومین Observer نادیده گرفته میشد. b/64285805
1.0.0 Alpha 8 - ۱ اوت ۲۰۱۷
تغییرات رفتار
- محدودیت
NOT NULLبرای ستونهای انواع اولیه یا ستونهای حاشیهنویسیشده با NonNull اضافه شده است. این کار ساختار جدولهای شما را تغییر میدهد، بنابراین اگر ازقبل از Architecture Components alpha 7 یا نسخههای قدیمیتر استفاده میکنید، اگر میخواهید دادهها را حفظ کنید باید انتقال را پیادهسازی کنید یا از روشfallbackToDestructiveMigration()در سازنده استفاده کنید. b/62007004
تغییرات میانای برنامهسازی کاربردی
- SupportSQLiteProgram اکنون AutoCloseable را گسترش میدهد. b/63131997
1.0.0 Alpha 7 - ۲۶ ژوئیه ۲۰۱۷
رفع اشکالها
اشکال بحرانی در روش LifecycleRegistry
removeObserverبرطرف شد، که باعث خرابی افزودن مجدد LifecycleObserver میشد.InvalidationTracker برای پایگاههای داده سفارشی اصلاح شد b/63162311
1.0.0 Alpha 6 - ۲۵ ژوئیه ۲۰۱۷
تغییرات رفتار
ترتیب فراخوانیهای LifecycleObserver تغییر کرده است. قبلاً ناظران همیشه بهترتیب اضافهشدنشان فراخوانده میشدند: اگر
observer1قبلازobserver2اضافه شود،ON_CREATEو همه رویدادهای دیگر را قبلازobserver2دریافت خواهد کرد. این دیگر برای رویدادهای تخریب صادق نیست، برای آنها ناظران به ترتیب معکوس اضافه شدن فراخوانی میشوند. بنابراین رفتار فعلی این است: اگرobserver1قبلازobserver2اضافه شود،ON_CREATEابتدا بهobserver1و سپس بهobserver2ارسال میشود (همین اتفاق برایON_STARTوON_RESUMEمیافتد)، اما رویدادON_PAUSEابتدا بهobserver2و سپس بهobserver1ارسال میشود (همین اتفاق برایON_STOPوON_DESTROYمیافتد).اگر انتقال وجود نداشته باشد، Room استثنایی را ایجاد میکند. قبلاً Room فقط پایگاه داده را پاک میکرد، اما اکنون ازکار میافتد. توسعهدهندگان میتوانند با فراخوانی میانای برنامهسازی کاربردی سازنده، با رفتار پاکسازی موافقت کنند. b/63872392
تغییرات میانای برنامهسازی کاربردی
Added
fallbackToDestructiveMigration()method toRoomDatabase.Builderto clear the database if migration is missing. b/63872392مؤلفههای معماری اکنون به کتابخانه پشتیبانی 26.0.0 وابسته هستند
رفع اشکالها
Fixed handling @Relation nested into @Embedded. b/63736065
انتقالهای آزمایشی برای جدولهای دارای کلید اصلی افزایش خودکار اصلاح شد. b/63393618
اکنون @Queries که پُرسمانهای DELETE یا UPDATE را اجرا میکند، متغیرهای مستقل را بهدرستی دریافت میکند. b/63872538
اکنون وقتی قطعه مالک در پشته برگشت باشد و تغییر پیکربندی دو بار اتفاق بیفتد، ViewModels حفظ میشود. b/38445801
1.0.0 Alpha 5 - ۱۸ ژوئیه ۲۰۱۷
تغییرات میانای برنامهسازی کاربردی
روش فراخوانی جدیدی به
RoomDatabase.Builderاضافه شد تا زمان ایجاد یا باز شدن پایگاه داده را مشاهده کند. b/62699324@Query اکنون ممکن است RxJava
MaybeیاSingleرا برگرداند. b/62231019
برای افزودن پشتیبانی RxJava به Room، باید به آرتیفکت android.arch.persistence.room:rxjava2 وابسته باشید.
رفع اشکالها
Fixed
@Deletequeries without any parameters. b/63608092بررسیهای نوع Room برای گیرندهها و تنظیمکنندهها اصلاح شد. b/63733651
1.0.0 Alpha 4 - ۱۱ ژوئیه ۲۰۱۷
تغییرات میانای برنامهسازی کاربردی
روش راحتی جدیدی (
runInTransaction()) به RoomDatabase اضافه شد.اکنون روشهای
@Insert،@Delete، و@Updateمیتوانند پارامترهایی از انواع نهادهای مختلف داشته باشند. b/62682405
رفع اشکالها
Fixed
byte[]handling in@Daomethods. b/62460045بررسی انتقال در Room اکنون از مقایسه غیرحساس به حروف بزرگ و کوچک استفاده میکند. b/62875382
پیکربندی proguard برای مصنوع Lifecycles اصلاح شد. b/62113696
1.0.0 Alpha 3 - ۱۵ ژوئن ۲۰۱۷
تغییرات میانای برنامهسازی کاربردی
@OnLifecycleEventاکنون فقط از ۱ پارامتر رویداد پشتیبانی میکند. این تغییر برای آمادهسازی پشتیبانی از Java 8 است تا بتوانیم در آینده به میاناهای دارای روشهای پیشفرض مهاجرت کنیم. دررابطهبا این تغییر، فقط روشهای حاشیهنویسیشده@OnLifecycleEvent(ON_ANY)میتوانند پارامتر دوم از نوعEventرا دریافت کنند (پارامتر اولLifecycleOwnerاست). برای جزئیات، به اسناد چرخه حیات مراجعه کنید.کلاسهای
LifecycleActivityوLifecycleFragmentبه آرتیفکتandroid.arch.lifecycle:extensionsمنتقل شدهاند.MigrationTestHelper بهجای
Context، نمونه Instrumentation را دریافت میکند تا بتواند طرحواره را از داراییهای آزمایشی بخواند و پایگاه داده را در بافت برنامه ایجاد کند.حاشیهنویسیهای
@Insert،@Deleteو@Updateدر روشهای@DAOاکنون میتوانندIterableرا بهعنوان نوع پارامتر داشته باشند. b/62259820
رفع اشکالها
روشهای لغوشده با رویدادهای چرخه حیات دیگر چندین بار فراخوانی نمیشوند.
اکنون چندین پارامتر
INبهدرستی مدیریت میشوند. b/62608681کلاسهای DAO انتزاعی اکنون میتوانند سازندهای داشته باشند که نمونه
@Databaseرا دریافت میکند. b/38488747DAO's can now have a super class/interface with type parameters. b/62103620
1.0.0 Alpha 2 - ۲ ژوئن ۲۰۱۷
تغییرات میانای برنامهسازی کاربردی
فراخوانی برگشتی InvalidationTracker اکنون فهرست نامهای جدول تغییریافته را دریافت میکند. (b/38468740)
سطح میانای برنامهسازی کاربردی کلاس SupportSQLiteDatabase کاهش یافته است. (b/38481640)
رفع اشکالها
- فایلهای Proguard برای چرخههای حیات. (b/62113696)
- ازدست رفتن دادهها با «تبدیلکنندههای نوع». (b/62100716)
- اجازه دادن به برگرداندن
Long[]از پُرسمانهای@Insert.
1.0.0 Alpha 1 - ۱۷ مه ۲۰۱۷
MinSDK: 14
اطلاعیههای عمومی
اگرچه پیشاز راهاندازی آزمایشهای زیادی انجام دادیم، مؤلفههای معماری درحالحاضر در نسخه آلفا هستند. اگر درحال ساختن برنامه تولید هستید، توجه داشته باشید که API قبلاز انتشار نسخه ۱.۰ تغییر خواهد کرد و ممکن است کاملاً پایدار نباشد. اگر با اشکالزدایی مشکلات در کتابخانههایی که استفاده میکنید راحت نیستید، توصیه میکنیم ابتدا «مؤلفههای معماری» را در پروژههای جانبی امتحان کنید.
توصیه نمیکنیم که همه امروز مهاجرت کنند. ما یک راهنمای انتقال برای نسخه ۱.۰ مؤلفههای معماری آماده خواهیم کرد.
محدودیتها و مشکلات شناختهشده
- چرخه حیات
FragmentوActivityCompatدر کتابخانه پشتیبانی هنوز میانایLifecycleOwnerرا پیادهسازی نمیکنند. وقتی Architecture Components به نسخه ۱.۰.۰ برسد، این کار را انجام خواهند داد.