15 ژانویه 2019
مدیر کار
WorkManager 1.0.0-beta02 منتشر شد. این نسخه حاوی برخی رفع اشکال است.
رفع اشکال
- یک مورد لبه که در آن کار دورهای میتوانست بیش از یک بار در هر بازه زمانی در دستگاههای دارای Android 6.0 (سطح API 23) اجرا شود، رفع شد. ب/121998363
- اصلاح
ConcurrentModificationExceptionدر دستگاههای دارای Android 5.1 (سطح API 22) یا پایینتر رفع شد. ب/121345393 - اجرای اشتباه کار زمانی که محدودیتها در دستگاههای دارای Android نسخه 5.1 (سطح API 22) یا پایینتر رعایت نمیشوند، رفع شد. b/122578012
- مدیریت تکمیل کار بهینه شده است تا در برخی موارد لبه سریعتر باشد. b/122358129
- تغییری را برای رسیدگی به شرایط مسابقه بالقوه در میان چندین نمونه
LiveDataکه WorkManager استفاده میکند، اضافه کرد. - به استفاده از وابستگی
Room1.1.1به جای1.1.1-rc01منتقل شد. این نسخه ها یکسان هستند b/122578011
19 دسامبر 2018
مدیر کار
WorkManager 1.0.0-beta01 منتشر شد. این نسخه شامل هیچ تغییر API نیست. در حرکت رو به جلو، انتظار می رود WorkManager تا نسخه بعدی ثابت بماند، مگر اینکه مشکلی حیاتی وجود داشته باشد. این نسخه حاوی برخی رفع اشکال است.
رفع اشکال
- فرزندانی که قبلاً از کار والدینی که با موفقیت انجام شده بودند لغو شده بودند، دیگر اجرا نخواهند شد. ب/120811767
- کلاس های ورود به سیستم به درستی مقداردهی اولیه شده اند (عمدتاً در طول آزمایش ها ظاهر می شوند).
18 دسامبر 2018
ناوبری
Navigation 1.0.0-alpha09 منتشر شد. این نسخه شامل تغییرات API است. لطفاً بخش شکستن تغییرات را در زیر ببینید.
ما تصمیم گرفتهایم که توسعه artifact android.arch.navigation:navigation-testing ادامه ندهیم. در حالی که برای آزمایش داخلی NavController مفید است، ما قویاً استراتژیهای آزمایشی جایگزین را توصیه میکنیم، مانند تمسخر نمونه NavController به منظور تأیید اینکه فراخوانهای navigate() صحیح انجام میشوند. این رویکرد در بحث Single Activity در AndroidDevSummit 2018 به تفصیل مورد بحث قرار گرفته است و ما بر روی اسناد اضافی مخصوصاً در مورد آزمایش با Navigation کار خواهیم کرد.
ویژگی های جدید
- آیتم های
MenuItemباmenuCategory="secondary"دیگر وقتی با متدهایNavigationUIاستفاده می شوند، پشته پشته ظاهر نمی شوند. b/120104424 -
AppBarConfigurationاکنون به شما امکان می دهد یک نمونه بازگشتیOnNavigateUpListenerرا تنظیم کنید که زمانی کهnavController.navigateUp()falseرا برمی گرداند فراخوانی می شود. b/79993862 b/120690961
شکستن تغییرات
- هنگام استفاده از
<argument>باargType="reference"، Navigation دیگر مرجع را تجزیه نمی کند، در عوض شناسه منبع خام را ارائه می دهد. ب/111736515 -
onNavDestinationSelected()اکنون به صورت پیشفرض به مقصد شروع گراف پیمایش شما برمیگردد و آنها را با روشهایsetupسازگار میکند.menuCategory="secondary"را بهMenuItemخود اضافه کنید تا پشته پشته ظاهر نشود. aosp/852869 - متدهای
fromBundle()در کلاسهایArgsتولید شده، اکنون یکBundleغیر تهی را بهجای یکBundlenullable aosp/845616 میگیرند.
رفع اشکال
- اکنون آرگومان ها به درستی از پیوندهای عمیق به عنوان
argTypeصحیح به جای همیشه به عنوان رشته b/110273284 تجزیه می شوند. - اکنون ناوبری به درستی منابع عمومی خود را b/121059552 صادر می کند
- Safe Args اکنون با Android Gradle Plugin 3.4 Canary 4 و بالاتر b/119662045 سازگار است.
12 دسامبر 2018
مدیر کار
WorkManager 1.0.0-alpha13 منتشر شد. این نسخه حاوی یک تغییر جزئی API است که برای برخی از کاربران Kotlin مفید خواهد بود.
تغییرات API
-
androidx.work.Resultبه یک کلاس داخلیListenableWorkerمنتقل شده است. این از تداخل مجدد با کلاسResultسطح بالای کاتلین جلوگیری می کند. این یک تغییر API است. b/120564418
شکستن تغییرات API
-
androidx.work.Resultبه یک کلاس داخلیListenableWorkerمنتقل شده است.
6 دسامبر 2018
صفحه بندی
Paging 2.1.0-rc01 بدون تغییر نسبت به 2.1.0-beta01 منتشر شد.
ناوبری
Navigation 1.0.0-alpha08 منتشر شد. این نسخه شامل تغییرات API است. لطفاً بخش شکستن تغییرات را در زیر ببینید.
ویژگی های جدید
- برچسبهای مقصد، وقتی با روشهای
NavigationUIاستفاده میشوند، اکنون بهطور خودکار نمونههای{argName}را درandroid:labelشما با آرگومان صحیح b/80267266 جایگزین میکنند. - پیمایش اکنون به پشتیبانی کتابخانه 28.0.0 b/120293333 بستگی دارد
شکستن تغییرات
-
OnNavigatedListenerبهOnDestinationChangedListenerb/118670572 تغییر نام داده است. -
OnDestinationChangedListenerاکنونBundleof Argument ها را نیز ارسال می کند aosp/837142 - ویژگیهای
app:clearTaskوapp:launchDocumentو روشهای مرتبط با آنها حذف شدهاند. ازapp:popUpToبا ریشه نمودار خود استفاده کنید تا همه مقصدها را از پشته خود حذف کنید. ب/119628354 -
ActivityNavigator.Extrasاکنون از یک الگویBuilderاستفاده می کند و توانایی تنظیم هرIntent.FLAG_ACTIVITY_را اضافه می کند.FLAG_ACTIVITY_ flags 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دیگر یکContextaosp/835340 نمی گیرد - NavigatorProvider اکنون به جای یک رابط، یک کلاس است.
NavigatorProviderبازگردانده شده توسطgetNavigatorProvider()عملکرد خود را تغییر نداده است. aosp/830660 -
NavDestination.navigate()حذف شده است. به جای آن،navigate()را درNavigatorفراخوانی کنید. aosp/830663 - بازسازی قابل توجه
Navigator، از بین بردن نیاز بهOnNavigatorNavigatedListenerو در عوض داشتنnavigate،NavDestinationرا که به آن پیمایش کرده بود، باز می گرداند. - نمونههای
Navigatorدیگر نمیتوانند رویدادهای پاپ را بهNavControllerارسال کنند. استفاده ازOnBackPressedCallbackرا برای قطع فشار دکمه برگشت و فراخوانیnavController.popBackStack()در نظر بگیرید. aosp/833716
رفع اشکال
-
popUpToاکنون زمانی که مقصد عنصر<navigation>b/116831650 باشد بهطور پیوسته کار میکند. - رفع تعدادی باگ که منجر به
IllegalArgumentExceptionدر هنگام استفاده از نمودارهای تودرتو شده است b/118713731 b/113611083 b/113346925 b/113305559 - ویژگی
dataPatternمقصدهای<activity>اکنون با فراخوانیtoString()b/120161365 آرگومان های آرگومان های غیر رشته ای را پر می کند.
ارگ ایمن
- Safe Args از اشیاء Serializable از جمله مقادیر Enum پشتیبانی می کند. انواع Enum می توانند با استفاده از enum literal بدون نام کلاس (مثلا
app:defaultValue="READ") یک مقدار پیش فرض تعیین کنند b/111316353 - Safe Args از آرایه های همه انواع پشتیبانی شده b/111487504 پشتیبانی می کند
- Safe Args اکنون زیرپوشه های فهرست منابع b/117893516 را نادیده می گیرد
- Safe Args در صورت لزوم، حاشیهنویسیهای
@Overrideرا اضافه میکند b/117145301
5 دسامبر 2018
مدیر کار
WorkManager 1.0.0-alpha12 منتشر شد. این نسخه شامل برخی تغییرات API شکسته است. لطفاً بخش Breaking API Changes را در زیر ببینید. این نسخه احتمالا به عنوان اولین نسخه بتا ما منتشر خواهد شد. alpha12 همچنین شامل به روز رسانی اسناد گسترده است.
تغییرات API
- یک مصنوع جدید،
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()بدست آورید.Result.retry(). اکنونListenableFutureشما به جایPayloadResultمی دهد.Workerروش های گیرنده و تنظیم کننده برایDataخروجی ندارند. این یک تغییر شکسته است. -
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)وConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)و انواع مختلف برای پشتیبانی بهتر از URIهای محتوای آهسته راهاندازی اضافه شد. ب/119919774 - نوع
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)اضافه شد. این روش به API 26 نیاز دارد. - متدهای پسوند
Operation.await()وListenableFuture.await()Kotlin اضافه شد. - به
Operation.getThrowable()Operation.getException()تغییر نام داد. این یک تغییر شکسته است. - کلاس
ContentUriTriggersو روش هایی که به آن ارجاع می دهند دیگر برای استفاده عمومی در دسترس نیستند. این یک تغییر شکسته است. - بقیه متدهای varargs را در
WorkManager،WorkContinuationوOneTimeWorkRequestحذف کرد تا API ساده شود. برای رفع هر گونه مشکل ساخت، می توانید vararg های موجود خود را باArrays.asList(...)بپیچید. ما همچنان نسخه های تک آرگومان هر روش را اضافه می کنیم. این یک تغییر شکسته است. - انواع
WorkContinuation.combine(OneTimeWorkRequest, *)حذف شد. آنها یک API گیج کننده ارائه می کردند. روش هایcombineموجود بیشتر قابل درک هستند. این یک تغییر شکسته است.
رفع اشکال
- پیادهسازیهای قبل از مارشمالو اکنون در بازیابی پس از مرگ فرآیند یک کار در حال اجرا قابل اعتمادتر هستند.
-
LiveDataکه از طریقobserveForeverمشاهده می شود از طریق WorkManager ردیابی می شود. این پشتیبان تعمیر کتابخانه اتاق است. b/74477406 - اکنون
Data.Builder.build()یک استثنا ایجاد می کند اگر شیء سریال شده از حداکثر اندازه خود بیشتر شود. این قبلا فقط در یک رشته پسزمینه اتفاق میافتاد که نمیتوانستید به درستی آن را مدیریت کنید. - بیشتر متمایز متوقف شده در مقابل کار لغو شده.
getWorkInfoById()یکWorkInfoباStateCANCELLEDدر طولListenableWorker.onStopped()برمی گرداند. -
Resultnullرا بهعنوان شکست درListenableWorkerدر نظر بگیرید. ب/120362353 - اصلاح گمانهزنی برای تبلتهای Shield که API 24 را اجرا میکنند که گاهی اوقات یک
IllegalArgumentExceptionرا ایجاد میکند. ب/119484416
شکستن تغییرات API
- پشتیبانی از Firebase JobDispatcher به دلیل منسوخ شدن قریب الوقوع آن حذف شده است. این به این معنی است که با رفتن به مرحله بتا، مصنوع
work-firebaseدیگر بهروزرسانی نخواهد شد. ما در آینده به دنبال اضافه کردن یک جایگزین خواهیم بود. -
Payloadترکیبی بهResultاکنونResultیک "کلاس مهر و موم شده" با سه پیاده سازی مشخص است که می توانید از طریقResult.success()(یاResult.success(Data))،Result.failure()(یاResult.failure(Data)) وResult.retry()بدست آورید.Result.retry(). اکنونListenableFutureشما به جایPayloadResultمی دهد.Workerروش های گیرنده و تنظیم کننده برایDataخروجی ندارند. - متدهای پسوند
Operation.await()وListenableFuture.await()Kotlin اضافه شد. - به
Operation.getThrowable()Operation.getException()تغییر نام داد. - کلاس
ContentUriTriggersو روش هایی که به آن ارجاع می دهند دیگر برای استفاده عمومی در دسترس نیستند. - بقیه متدهای varargs را در
WorkManager،WorkContinuationوOneTimeWorkRequestحذف کرد تا API ساده شود. برای رفع هر گونه مشکل ساخت، می توانید vararg های موجود خود را باArrays.asList(...)بپیچید. ما همچنان نسخه های تک آرگومان هر روش را اضافه می کنیم. - انواع
WorkContinuation.combine(OneTimeWorkRequest, *)حذف شد. آنها یک API گیج کننده ارائه می کردند. روش هایcombineموجود بیشتر قابل درک هستند.
4 دسامبر 2018
اتاق
Room 2.1.0-alpha03 با پشتیبانی از کوروتین ها و چندین رفع اشکال منتشر شده است.
تغییرات API
-
tokenizerFTS در@Fts3/@Fts4اکنون به جای Enum یک رشته می گیرد. این اجازه می دهد تا توکنایزرهای سفارشی توسط Room استفاده شود. توکنایزرهای داخلی هنوز درFtsOptionsبه عنوان ثابت های رشته ای تعریف می شوند. b/119234881
ویژگی های جدید
- Couroutines : روش های DAO اکنون می توانند توابع تعلیق شوند. برای پشتیبانی از عملکردهای تعلیق در اتاق، مصنوع جدیدی منتشر شده است،
room-coroutines. b/69474692 - روشهای DAO مشروحشده با
@Insert،@Deleteیا@Updateاکنون ازListenableFutureبه عنوان نوع بازگشتی پشتیبانی میکنند. b/119418331
رفع اشکال
- اشکالی را که در آن Room به اشتباه تلاش میکرد تا سازندهای با ستونهایی در ویژگی
ignoredColumnsدر@Entityپیدا کند، برطرف شد. b/119830714 - اشکالی را برطرف کرد که در آن Room پارامترهای روش DAO را به عنوان نهایی در اجرای تولید شده علامتگذاری نمیکرد. b/118015483
- رفع اشکالی که در آن هنگام گزارش خطا در یک درخواست با نمادهای خاص، پردازنده اتاق از کار می افتد. b/119520136
- اشکالی را برطرف کرد که در آن Room سایر پیاده سازی های
Collectionمختلف را به عنوان آرگومان های یک عبارتINرد می کرد. b/119884035 - رفع اشکالی که در آن LiveData از اتاق بازگردانده میشد، در صورت مشاهده برای همیشه زبالهها جمعآوری میشد و باعث میشد که دیگر دادههای جدید منتشر نشود. b/74477406
- قفل بسته
RoomDatabaseرا به روز کرد تا اختلافات قفل را کاهش دهد. b/117900450
8 نوامبر 2018
مدیر کار
WorkManager 1.0.0-alpha11 منتشر شد. این نسخه حاوی تغییرات زیادی است که در beta API پایدار خواهد شد. تغییرات API قطعی در این نسخه وجود دارد. لطفاً بخش Breaking API Changes را در زیر ببینید.
تغییرات API
-
work-runtime-ktxیکCoroutineWorkerجدید را معرفی می کند. -
WorkStatusبهWorkInfoتغییر نام داده است. همه انواع متدgetStatusمربوطه به انواعgetWorkInfoمربوطه تغییر نام داده اند. این یک تغییر شکسته است. -
ListenableWorker.onStopped()دیگر نمی پذیرد دارای یک آرگومان بولی است که نشان دهنده لغوWorkRequestاست.WorkManagerدیگر این تمایز را ایجاد نمی کند. این یک تغییر شکسته است. - بسته
androidx.work.testبه بستهandroidx.work.testingتغییر نام داده است. این یک تغییر شکسته است. - تنظیم کننده های
Constraintsدیگر بخشی از API عمومی نیستند. این یک تغییر شکسته است. -
WorkerParameters.getTriggeredContentUris()وWorkerParameters.getTriggeredContentAuthorities()آرایه هایی که قبلا برگردانده شده بودند. اکنون این روش ها مجموعه ها را برمی گرداند. این یک تغییر شکسته است. -
ListenableWorker.onStartWork()بهListenableWorker.startWork()تغییر نام داده است. این یک تغییر شکسته است. - سازنده
WorkStatusدیگر بخشی از API عمومی نیست. این یک تغییر شکسته است. -
Configuration.getMaxJobSchedulerID()وConfiguration.getMinJobSchedulerID()به ترتیب بهConfiguration.getMinJobSchedulerId()وConfiguration.getMaxJobSchedulerId()تغییر نام دادند. این یک تغییر شکسته است. - بسیاری از حاشیه نویسی های
@NonNullرا به API عمومی اضافه کرد تا ارگونومی API را بهبود بخشد. -
WorkManager.enqueueUniqueWork()API را برای قرار دادنOneTimeWorkRequestهای منحصر به فرد بدون نیاز به ایجادWorkContinuationصف قرار دهید. - همه انواع روشهای
enqueueوcancelدرWorkManagerاکنون یک نوعOperationجدید را برمیگردانند. این یک تغییر شکسته است. - همه انواع
enqueueدیگر varargs را برایWorkRequestنمی پذیرند. این یک تغییر شکسته است. به جای آن از مجموعه ها استفاده کنید. برای تغییر کد موجود می توانید ازArrays.asList()استفاده کنید. ما این کار را برای کاهش سطح API و تعداد روش انجام دادیم. - تلاش برای
initializeWorkManagerبیش از یک بار در هر فرآیند اکنون منجر به یکIllegalStateExceptionمی شود. این یک تغییر شکسته است.
رفع اشکال
-
WorkRequest.Builderدر آرتیفکتwork-runtime-ktxاکنون ازListenableWorkers استفاده می کند. رفع b/117666259 - مطمئن شوید زمان اجرای بعدی
PeriodicWorkدر آینده است. رفع b/118204399 - هنگام استفاده از WorkManager هنگام راه اندازی برنامه، ورودی/خروجی دیسک احتمالی را حذف کنید. رفع b/117796731
- یک وضعیت مسابقه را در
WorkConstraintsTrackerبرطرف کنید. رفع android-workmanager/issues/56
شکستن تغییرات API
-
WorkStatusبهWorkInfoتغییر نام داده است. همه انواع متدgetStatusمربوطه به انواعgetWorkInfoمربوطه تغییر نام داده اند. -
ListenableWorker.onStopped()دیگر نمی پذیرد دارای یک آرگومان بولی است که نشان دهنده لغوWorkRequestاست.WorkManagerدیگر این تمایز را ایجاد نمی کند. - بسته
androidx.work.testبه بستهandroidx.work.testingتغییر نام داده است. - تنظیم کننده های
Constraintsدیگر بخشی از API عمومی نیستند. -
WorkerParameters.getTriggeredContentUris()وWorkerParameters.getTriggeredContentAuthorities()آرایه هایی که قبلا برگردانده شده بودند. اکنون این روش ها مجموعه ها را برمی گرداند. -
ListenableWorker.onStartWork()بهListenableWorker.startWork()تغییر نام داده است. - سازنده
WorkStatusدیگر بخشی از API عمومی نیست. -
Configuration.getMaxJobSchedulerID()وConfiguration.getMinJobSchedulerID()به ترتیب بهConfiguration.getMinJobSchedulerId()وConfiguration.getMaxJobSchedulerId()تغییر نام دادند. - همه انواع روشهای
enqueueوcancelدرWorkManagerاکنون یک نوعOperationجدید را برمیگردانند. - همه انواع
enqueueدیگر varargs را برایWorkRequestنمی پذیرند. - تلاش برای
initializeWorkManagerبیش از یک بار در هر فرآیند اکنون منجر به یکIllegalStateExceptionمی شود.
1 نوامبر 2018
صفحه بندی
Paging 2.1.0-beta01 بدون تغییر نسبت به 2.1.0-alpha01 منتشر شد.
30 اکتبر 2018
اتاق
Room 2.1.0-alpha02 با چندین رفع اشکال و یک ویژگی جدید منتشر شد.
ویژگی های جدید
- پشتیبانی برای ارجاع به یک
@DatabaseViewدر یک@Relationاضافه شد. b/117680932
رفع اشکال
- رفع اشکالی که در آن Room هنگام اشتراک و حذف یک نوع بازگشتی Rx، ورودی/خروجی دیسک را در رشته اصلی انجام میداد. ب/117201279
- رفع اشکالی که در آن Room نتوانست مبدل نوع مناسبی را برای یک فیلد در کلاس موجودیت Kotlin پیدا کند. ب/111404868
- اشکالی را که در آن Room کد نادرستی برای پیادهسازی رابط
DAOحاوی یک روش پیشفرض Kotlin بدون آرگومان ایجاد میکرد، برطرف کرد. ب/117527454 - تجزیه کننده گرامر SQLite اتاق را به روز کرد، مشکل عملکردی را که باعث زمان طولانی ساخت می شد برطرف کرد. ب/117401230
29 اکتبر 2018
ناوبری
Navigation 1.0.0-alpha07 با رفع اشکال و تغییرات API منتشر شد.
ویژگی های جدید
- یک کلاس AppBarConfiguration جدید به شما این امکان را می دهد که مقصدهایی را که به عنوان مقاصد سطح بالا در نظر گرفته شوند، سفارشی کنید. برای جزئیات به مستندات به روز شده مراجعه کنید. ب/117333663
- اکنون می توانید آرگومان ها را به مقصد شروع گراف b/110300470 ارسال کنید
- پیوندهای عمیق اکنون از طرح های سفارشی با نقطه، خط تیره و علائم بعلاوه پشتیبانی می کنند. b/112806402
شکستن تغییرات
- ماژول
navigation-testing-ktxدرnavigation-testing artifactتا شده است و دیگر منتشر نخواهد شد. - مصنوع
navigation-testingاکنون به کتابخانه استاندارد کاتلین وابسته است. API تغییر کرده است تا با قراردادهای Kotlin سازگارتر باشد، اما میتوانید همچنان از آن برای آزمایشهای نوشته شده در جاوا استفاده کنید. - نمودارهای پیمایش ثبت شده مانیفست فراداده دیگر پشتیبانی نمی شوند. b/118355937
- کنشها دیگر نمیتوانند به مقصد <activity> پیوست شوند. aosp/785539
رفع اشکال
- پیوندهای عمیق اکنون به درستی پارامترهای پرس و جو را تجزیه می کنند. b/110057514
- اکنون مقصدهای فعالیت به درستی همه انیمیشن های ورود و خروج را اعمال می کنند. ب/117145284
- رفع خرابی که پس از تغییرات پیکربندی هنگام استفاده از Navigators سفارشی رخ می دهد. b/110763345
ارگ ایمن
- ارگ های ایمن اکنون وابستگی ثابتی به پلاگین Gradle Android 3.2.1 دارند. ب/113167627
- اکنون میتوان جهتها را برای کلاسهای داخلی تولید کرد. b/117407555
- مشکل تولید مسیرها در نمودار <include> برطرف شد. ب/116542123
12 اکتبر 2018
صفحه بندی
Paging 2.1.0-alpha01 با دو افزوده اصلی منتشر شد - حذف صفحه و کتابخانه های پسوند KTX برای هر مصنوع - و همچنین چندین تغییر و رفع اشکال API دیگر.
تغییرات API
- اضافه شده
PagedList.Config.Builder.setMaxSize()برای محدود کردن تعداد آیتم های بارگذاری شده در حافظه. -
androidx.paging.Config()به عنوان جایگزین Kotlin برایPagedList.Config.Builderاضافه شد -
androidx.paging.PagedList()به عنوان جایگزین Kotlin برایPagedList.Builderاضافه شد - اضافه شده
DataSourceFactory.toLiveData()به عنوان جایگزین Kotlin برایLivePagedListBuilder -
DataSourceFactory.toObservable()وtoFlowable()به عنوان جایگزین های Kotlin برایRxPagedListBuilderاضافه شد -
AsyncPagedListDiffer.addPagedListListener()برای گوش دادن به هنگام تعویض PagedList اضافه شد. b/111698609 - نوع
PagedListAdapter.onCurrentListChanged()اضافه شد که از لیست قدیمی و جدید عبور می کند، نوع قبلی منسوخ شده است. - انواع
PagedListAdapter/AsyncPagedListDiffer.submitList()اضافه شد که یک تماس اضافی دریافت میکنند که اگر/زمانی که فهرست صفحه نمایش داده میشود، پس از تغییر ایجاد میشود. این به شما امکان میدهد تا مبادله فهرست فهرست را با سایر بهروزرسانیهای رابط کاربری همگام کنید. b/73781068 -
PagedList.getLoadedCount()اضافه شد تا به شما اطلاع دهد که چند آیتم در حافظه هستند. توجه داشته باشید که مقدار بازگشتی همیشه برابر با.size()است اگر متغیرهای غیر فعال باشند.
رفع اشکال
- در صورت استفاده مجدد از فهرستها، وضعیت مسابقه در هنگام متفاوت بودن اصلاح شد b/111591017
-
PagedList.loadAround()اکنونIndexOutOfBoundsExceptionرا زمانی که ایندکس نامعتبر است می اندازد. قبلاً ممکن بود با یک استثنای نامشخص دیگر خراب شود. - موردی رفع شد که در آن اندازه بار اولیه بسیار کوچک همراه با داده های بدون تغییر منجر به بارگذاری بیشتر نمی شود b/113122599
11 اکتبر 2018
مدیر کار
WorkManager 1.0.0-alpha10 با پشتیبانی از کارهای ناهمزمان تحت کنترل توسعهدهنده منتشر شد. تغییرات API قطعی در این نسخه وجود دارد. لطفاً بخش Breaking API Changes را در زیر ببینید.
ما پیشبینی میکنیم که WorkManager وارد مراحل پایانی دوره آلفای خود میشود. ما انتظار داریم که API در بتا پایدار باشد، بنابراین لطفاً کمی وقت بگذارید و بازخورد خود را در مورد ردیاب مشکل ما ارسال کنید.
تغییرات API
- تمام متدها و کلاسهای
deprecatedقبلی، به ویژه سازنده پیشفرضWorkerحذف شد. این یک تغییر API است. -
NonBlockingWorkerبهListenableWorkerتغییر نام داد، که اکنون یک کلاس عمومی پنهان و آماده برای استفاده است.-
ListenableWorkerدسترسی به یک متد انتزاعی را فراهم می کند،ListenableFuture<Payload> onStartWork()که در thread اصلی فراخوانی می شود. این به شما بستگی دارد که کار را به صورت ناهمزمان شروع و پردازش کنید. پس از اتمام، بایدListenableFutureرا به طور مناسب به روز کنید. پیاده سازی مرجعListenableFutures در بستهFuturesدرalpha02ارائه شده است (به بخشWorkManagerزیر مراجعه کنید). -
WorkerListenableWorkerرا گسترش می دهد و همچنان مانند قبل با متد انتزاعیResult doWork()عمل می کند. - برخی از روشها و اعضا را از
WorkerبهListenableWorkerتغییر داد. - ما به زودی پیاده سازی های مرجعی را برای
ListenableWorkerارائه خواهیم داد که از کوروتین های Kotlin (پس از انتشار نسخه های پایدار) و RxJava2 استفاده می کنند.
-
- رابط
WorkerFactoryو اجرای بتنDefaultWorkerFactoryدر یک کلاس انتزاعی به نامWorkerFactoryادغام شدهاند. پیاده سازی تضمین می کند که رفتار مبتنی بر بازتاب پیش فرض به عنوان آخرین تلاش برای هر نمونهWorkerFactoryایجاد شده توسط کاربر نامیده می شود. این یک تغییر شکسته است. -
WorkManager.synchronous()وWorkContinuation.synchronous()و تمام متدهای مرتبط را حذف کرد.ListenableFuture<Void>به عنوان نوع برگشتی بسیاری از متدها در API اضافه شد. این یک تغییر API است.- اکنون می توانید با استفاده از
ListenableFutures به صورت همزمان دریافت و مشاهده کنید. به عنوان مثال،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. ب/116296569 - رفع
NullPointerExceptionبالقوه در شرایط مسابقه که در آن کارREPLACEd بود. b/116253486 و b/116677275 -
WorkContinuation.combine()اکنون یک یا چندWorkContinuationرا به جای دو یا چند مورد می پذیرد. b/117266752
شکستن تغییرات API
- تمام متدها و کلاسهای
deprecatedقبلی، به ویژه سازنده پیشفرضWorkerحذف شد. - رابط
WorkerFactoryو اجرای بتنDefaultWorkerFactoryدر یک کلاس انتزاعی به نامWorkerFactoryادغام شدهاند. -
WorkManager.synchronous()وWorkContinuation.synchronous()حذف شد. - متدهای
WorkManager.getStatus*()اکنونListenableFutures را برمی گرداند.WorkManager.getStatus*LiveData()LiveDataرا برمی گرداند.
آینده
Futures 1.0.0-alpha02 منتشر شد.
تغییرات API
- توسعه دهندگان اکنون می توانند از
ResolvableFutureوAbstractResolvableFutureبه عنوان پیاده سازی های سبک وزنListenableFutureاستفاده کنند.
8 اکتبر 2018
اتاق
Room 2.1.0-alpha01 منتشر شد.
ویژگی های جدید
- FTS : اتاق اکنون از موجودیت هایی با جدول FTS3 یا FTS4 نگاشت پشتیبانی می کند. کلاس های حاشیه نویسی شده با
@Entityاکنون می توانند با@Fts3یا@Fts4حاشیه نویسی شوند تا یک کلاس با جدول جستجوی متن کامل نقشه برداری اعلام شود. گزینه های FTS برای سفارشی سازی بیشتر از طریق روش های حاشیه نویسی در دسترس هستند. ب/62356416 - Views : Room اکنون از اعلان کلاس به عنوان پرس و جو ذخیره شده پشتیبانی می کند که با استفاده از حاشیه نویسی DatabaseView@ به عنوان view نیز شناخته می شود. b/67033276
- مقدار خودکار : اتاق اکنون از اعلام کلاس های حاشیه نویسی AutoValue به عنوان موجودیت ها و POJO پشتیبانی می کند. حاشیهنویسیهای Room
@PrimaryKey،@ColumnInfo،@Embeddedو@Relationاکنون میتوانند در روشهای انتزاعی کلاس مشروح شده با مقدار خودکار اعلام شوند. توجه داشته باشید که این حاشیهنویسیها برای درک درست آنها باید با@CopyAnnotationsfor Room نیز همراه باشند. b/62408420 - پشتیبانی از انواع بازگشت Rx اضافی : روشهای DAO مشروحشده با
@Insert،@Deleteیا@Updateاکنون از انواع بازگشت RxCompletable،Single<T>وMaybe<T>پشتیبانی میکنند. ب/63317956 - انواع غیرقابل تغییر با
@Relation: قبلاً برای تنظیم کردن فیلدهای حاشیهنویسی@Relationلازم بود، اما اکنون میتوانند پارامترهای سازنده باشند. -
enableMultiInstanceInvalidation: یک API جدید درRoomDatabase.Builderبرای فعال کردن عدم اعتبار در چندین نمونه از RoomDatabase با استفاده از یک فایل پایگاه داده است. این مکانیسم ابطال چند نمونه ای در چندین فرآیند نیز کار می کند. b/62334005 -
fallbackToDestructiveMigrationOnDowngrade: یک API جدید درRoomDatabase.Builderاست که در صورت بروز دانگرید، پایگاه داده را دوباره به صورت خودکار ایجاد می کند. ب/110416954 -
ignoredColumns: یک API جدید در حاشیه نویسی@Entityاست که می تواند برای فهرست کردن فیلدهای نادیده گرفته شده با نام استفاده شود. برای نادیده گرفتن فیلدهای ارثی در یک موجودیت مفید است. b/63522075
API / تغییرات رفتار
-
mCallbackوmDatabaseدرRoomDatabaseاکنون@Deprecatedشدهاند و در نسخه اصلی بعدی Room حذف خواهند شد. b/76109329
رفع اشکال
- دو مشکل که Room به درستی از یک پایگاه داده خراب یا یک مهاجرت بد در طول اولیه سازی بازیابی نمی شد، رفع شد. ب/111504749 و ب/111519144
- Room اکنون به درستی از سازنده اصلی Kotlin در کلاس های داده استفاده می کند و نیازی به اعلام فیلدها به عنوان
varsندارد. b/105769985
1 اکتبر 2018
Room 2.0.0 بدون تغییر نسبت به 2.0.0-rc01 منتشر شد. Paging 2.0.0 با یک رفع اشکال منتشر شد.
صفحه بندی
رفع اشکال
- خرابی را که میتوانست با پیمایش بسیار سریع با استفاده از
PositionalDataSourceو متغیرهای b/114635383 رخ دهد، برطرف کرد.
21 سپتامبر 2018
Lifecycle 2.0.0 با یک رفع اشکال از 2.0.0-rc01 در ViewModel منتشر شده است.
چرخه زندگی
رفع اشکال
- یک قانون محافظ ViewModel که سازنده های b/112230489 را به اشتباه حذف کرده بود، رفع کرد.
20 سپتامبر 2018
ناوبری
Navigation 1.0.0-alpha06 با رفع اشکال و تغییرات API منتشر شد.
ویژگی های جدید
- انتقال عناصر مشترک برای مقاصد قطعه و فعالیت اکنون پشتیبانی میشود b/79665225 . برای اطلاعات بیشتر، به پیاده سازی ناوبری با مؤلفه معماری ناوبری مراجعه کنید
- انتخاب یک مورد در
NavigationViewاکنون هر برگه پایینی حاوی b/112158843 را میبندد.
تغییرات API
- شکستن تغییر: متد Navigator
navigate()اکنون یک پارامترNavigator.Extrasمی گیرد. -
getGraph()NavController اکنونNonNullb/112243286 است.
رفع اشکال
-
NavigationUI.setupWithNavController()دیگر نماها را لو نمی دهد اگر با نماهایی از مقصدهای جداگانه استفاده شود b/111961977 - Navigator
onSaveState()اکنون فقط یک بار با b/112627079 فراخوانی می شود
ارگ ایمن
- کلاسهای Directions مقصد ناوبری اکنون کلاس Directions والدین خود را در صورت وجود b/79871405 گسترش میدهند.
- دستورالعمل ها و کلاس های Args اکنون یک پیاده سازی مفید
toString()b/111843389 دارند.
19 سپتامبر 2018
مدیر کار
WorkManager 1.0.0-alpha09 با رفع اشکال، به روز رسانی زیرساخت و تغییرات API منتشر شد.
موضوع شناخته شده
اگر با مشکل زیر مواجه شدید: "بیش از یک فایل با مسیر مستقل سیستم عامل "META-INF/proguard/androidx-annotations.pro" یافت شد، لطفاً موارد زیر را در فایل gradle خود به عنوان یک راه حل موقت قرار دهید تا زمانی که ما مشکل را برطرف کنیم. مشکل در آلفا 10:
شیار
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
کاتلین
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
رفع اشکال
- رفع دیگری اضافه شد که برای خطای "100 شغل" مورد نیاز بود. b/115560696
- برخی اصلاحات برای خطاهای محدودیت کلید خارجی به دلیل شرایط مسابقه اضافه شده است. b/114705286
- تماسهای
ConstraintTrackingWorker.onStopped(boolean)بهWorkerزیربنایی واگذار شده است. ب/114125093 - حداقل تأخیر برگشتی صحیح را برای Firebase JobDispatcher اعمال کنید. ب/113304626
- threading بهبودیافته تضمین های داخلی کتابخانه را می دهد.
- مشکل احتمالی با حذف داخلی
LiveDataرا برطرف کنید.
تغییرات API
- اکنون می توانید نمونه های
Workerخود را در زمان اجرا با تعیینWorkerFactoryبه عنوان بخشی ازWorkManager.Configurationایجاد کنید. کارخانه بازگشتیDefaultWorkerFactoryاست که با رفتار نسخههای قبلی WorkManager مطابقت دارد.- سازنده های پیش فرض
WorkerوNonBlockingWorkerاکنون به عنوان منسوخ علامت گذاری شده اند. لطفاً از سازنده جدید (Worker(Context, WorkerParameters)) استفاده کنید وsuper(Context, WorkerParameters)را فراخوانی کنید. نسخه های بعدی WorkManager سازنده پیش فرض را حذف خواهند کرد.
- سازنده های پیش فرض
- ما شروع به استفاده از مصنوع جدید
ListenableFutureبه صورت داخلی (بدون وابستگی Guava) کردهایم. در نسخه های آینده ListenableFutures را به API معرفی خواهیم کرد. این تغییر از پنهان شدن نهاییNonBlockingWorkerپشتیبانی می کند. - از طریق
TestDriver.setInitialDelayMet(UUID)وTestDriver.setPeriodDelayMet(UUID)توانایی راه اندازی کار زمان بندی شده درTestDriverرا اضافه کنید. b/113360060
شکستن تغییرات
- سازنده های پیش فرض
WorkerوNonBlockingWorkerمنسوخ شده اند. لطفاً در اسرع وقت به سازنده جدید مهاجرت کنید. نسخه های آینده سازنده پیش فرض را حذف خواهند کرد.
27 آگوست 2018
مدیر کار
WorkManager 1.0.0-alpha08 با رفع اشکال منتشر شد.
رفع اشکال
- کامپوننت های WorkManager به صراحت به عنوان راه اندازی مستقیم ناآگاه برچسب گذاری شده اند تا در هنگام بوت مستقیم فعال نشوند. در آینده، نسخهای از WorkManager را ارائه خواهیم داد که مستقیماً از بوت آگاه باشد. ب/112665532
- مشکلی را که در آن کار دوباره امتحان شده در حال اجرا نبود، برطرف شد. b/112604021
- انجام نشدن مکرر کارهای دوره ای ثابت (مربوط به موضوع فوق). ب/112859683
- هنگامی که فرآیند برنامه از قبل در حال اجرا است، سیاستهای عقب نشینی قابل احترام است.
- پیام های استثنا در
Dataبرای نشان دادن محدودیت 10 کیلوبایت تصحیح شده است. - حداکثر مقدار
Configuration.setMaxSchedulerLimit(int)را به 50 کاهش داد تا تأخیر در تکمیل پردازشJobSchedulerدر نظر گرفته شود. ب/112817355
16 آگوست 2018
مدیر کار
WorkManager 1.0.0-alpha07 با رفع اشکال و تغییرات جزئی API منتشر شد.
رفع اشکال
- یک پرس و جو بالقوه SQL را با محدودیت های منفی که می تواند تعداد نامحدودی از نتایج را برگرداند، رفع کرد.
- کاری که اجرای آن به پایان رسیده است، اکنون به درستی همه نسخههای در انتظار آن کار را در زمانبندیهای دیگر لغو میکند. این منجر به فراتر رفتن از محدودیت مشاغل
JobSchedulerشد. ب/111569265 - رفع
ConcurrentModificationExceptionدرConstraintTracker. ب/112272753 - حاشیه نویسی نوع برگشت
Data.getBooleanArray(String)وData.getIntArray(String)را به جای@NonNullبه@Nullableتغییر داد. ب/112275229
تغییرات API
-
Workerاکنون یک کلاس جدید،NonBlockingWorkerرا گسترش می دهد. این هیچ تاثیری بر استفاده فعلی ندارد. در آینده،NonBlockingWorkerبه یک موجودیت کاملاً پشتیبانی شده برای راهحلهای threading سفارشی تبدیل خواهد شد. - حاشیه نویسی نوع برگشت
Data.getBooleanArray(String)وData.getIntArray(String)را به جای@NonNullبه@Nullableتغییر داد. ب/112275229 - پسوندهای Kotlin:
Map.toWorkData()را منسوخ کرد و یکworkDataOf(vararg Pair<String, Any?>)اضافه کرد تا با APIهای موجود سازگارتر باشد.
10 آگوست 2018
ناوبری
Navigation 1.0.0-alpha05 با رفع اشکال منتشر شد.
رفع اشکال
- رفع اشکالی که باعث رفتار نادرست پشت پشتی می شود. b/111907708
- رفع اشکال در
equals()کلاس های Generated Args. ب/111450897 - خرابی ساخت را در Safe Args برطرف کنید. b/109409713
- رفع تبدیل از شناسه های منبع به نام های جاوا b/111602491
- رفع پیام های خطا در مورد پوچ بودن در افزونه Safe Args.
- اضافه کردن حاشیه نویسی پوچ از دست رفته.
6 آگوست 2018
نسخه های Androidx از چرخه عمر ، اتاق و صفحه نسخه نسخه نسخه 2.0.0-rc01 . همه مصنوعات از 2.0.0-beta01 بدون تغییر هستند.
1 آگوست 2018
کارگر
WorkManager 1.0.0-alpha06 با رفع اشکال منتشر می شود.
رفع اشکال
- هنگام برنامه ریزی کار از قفل پایگاه داده جلوگیری کنید. b/111801342
- اشکالی را برطرف کنید که باعث می شود
PeriodicWorkدر هنگام کار در حالت Doze اجرا نشود. b/111469837 - هنگام ردیابی محدودیت هایی که باعث سقوط
WorkManagerمی شود ، یک وضعیت مسابقه را برطرف کنید. googlecodelabs/android-workmanager/شماره/56 - هنگام استفاده از
WorkRequestWorkRequest.Builder#build()ایجاد کنید. b/111408337 - استفاده از
RescheduleReceiverرا فقط در مواردی کهWorkRequestوجود دارد که به آن احتیاج دارند ، فعال کنید. b/111765853
24 جولای 2018
کارگر
WorkManager 1.0.0-alpha05 با رفع اشکال مهم و تغییرات ورود به سیستم منتشر می شود.
تغییرات API
-
WorkManager.getInstance()اکنون به جای@Nullableبا@NonNullحاشیه نویسی شده است. درعوض ، اگر مجرد در موارد اولیه سازی دستی به درستی اولیه نباشد ، این روش یکIllegalStateExceptionرا به وجود می آورد. این یک تغییر API در حال شکستن است. - یک API جدید ،
Configuration.Builder.setMinimumLoggingLevel(int)اضافه شده است ، که می تواند فعل کارگرم را کنترل کند. به طور پیش فرض ، WorkManagerLog.INFOو بالاتر را ثبت می کند. - امضاء
Data.getString()را تغییر دادهnull. این یک تغییر API در حال شکستن است. - برخی از روشهای مورد نیاز فقط برای استفاده داخلی به عنوان
@hideرا نشان می دهد. این شامل سازندهConstraints،Data.toByteArray()وData.fromByteArray(byte[])است. این یک تغییر API در حال شکستن است.
رفع اشکال
- WorkManager دیگر در موارد شناخته شده از پس زمینه کار ، کار را انجام نمی دهد. این می تواند منجر به تصادف شود. b/110564377
- در هنگام استفاده از
JobScheduler، دو برنامه ریزی دوازدهه ازPeriodicWorkRequestرا ثابت کرد. b/110798652 - مسئله ای را با
PeriodicWorkRequestانجام نشده به درستی پس از Doze Doze برطرف کرد. b/111469837 - مشکل با تأخیرهای اولیه هنگام استفاده از Firebase JobDispatcher را برطرف کرد. b/111141023
- برخی از شرایط بالقوه مسابقه و مشکلات زمان بندی را برطرف کرد.
- به درستی آزاد
BroadcastReceiverاست که دیگر نیازی به آن نبود. - عملکرد مجدد بهینه سازی شده هنگام شروع مجدد برنامه ها پس از بسته شدن نیرو.
- مجاز به
TestScheduler.setAllConstraintsMet(UUID)قبل یا بعد از آنWorkRequestمی شود. b/111238024
تغییر تغییرات
-
WorkManager.getInstance()اکنون به جای@Nullableبا@NonNullحاشیه نویسی شده است. - امضاء
Data.getString()را تغییر دادهnull. - برخی از روشهای مورد نیاز فقط برای استفاده داخلی به عنوان
@hideرا نشان می دهد. این شامل سازندهConstraints،Data.toByteArray()وData.fromByteArray(byte[])است.
19 جولای 2018
ناوبری
ناوبری 1.0.0-alpha04 و افزونه Arns Safe Args Gradle شامل تعدادی از تغییرات API ، تغییرات رفتار و رفع اشکال است.
API / رفتار تغییر می کند
- Navhostfragment همیشه قطعه فعلی را به عنوان قطعه اصلی ناوبری تنظیم می کند ، اطمینان حاصل می کند که مدیران قطعه کودک قبل از ظاهر شدن NavController بیرونی B/111345778 ظاهر می شوند
استدلال های امن
- تغییر شکستن:
app:typeبهapp:argTypeبرای جلوگیری از درگیری با سایر کتابخانه ها مانند ConstraintLayout 2.0.0-alpha1 b/111110548 - پیام های خطا از Args Safe اکنون قابل کلیک B/111534438 هستند
- کلاسهای ARG در حال حاضر تأیید می کنند که ویژگی های
NonNullدر واقع تهی B/111451769 نیستند - حاشیه نویسی های
NonNullاضافی به Navdirections اضافه شده و کلاس های تولید شده B/111455455 B/111455456
رفع اشکال
- پس از پیوند عمیق به یک مقصد قطعه قطعه b/111515685 ، مشکل را با دکمه برگشت سیستم برطرف کرد
12 جولای 2018
ناوبری
ناوبری 1.0.0-alpha03 و افزونه Arg Args Args Arns شامل تعدادی از تغییرات API ، تغییر رفتار و رفع اشکال است.
API / رفتار تغییر می کند
- یک روش navigationui.setupwithnavcontroller برای نوار ابزار اضافه شده است b/109868820
- یک روش navigationui.setupwithnavcontroller برای فروپاشی toolbarlayout b/110887183 اضافه شده است
- popbackstack () اکنون هنگامی که پشته عقب خالی است یا هنگامی که شناسه مقصد داده شده در پشته پشت b/110893637 نیست ، نادرست است
- FragmentNavigator اکنون عملیات ناوبری را پس از FragmentManager نادیده می گیرد ، از این رو از "نمی توان این اقدام را پس از OnsaveInstancestate" انجام داد "
استدلال های امن
- شکستن تغییر: شخصیت های غیر آلفانوم در عمل و نام استدلال با پوشش شتر در نام های روش Navdirections جایگزین می شوند
- به عنوان مثال
DemoController.indexتبدیل بهsetDemoControllerIndexb/79995048 خواهد شد - به عنوان مثال
action_show_settingsتبدیل بهactionShowSettingsb/79642240 خواهد شد
- به عنوان مثال
- Breaking Change: آرگومان ها اکنون به طور پیش فرض غیر تهی تلقی می شوند. برای اجازه مقادیر تهی در آرگومان های رشته و بسته بندی ،
app:nullable="true"b/79642307 - اکنون می توانید از
app:type="long"با پیش فرض مقادیر به شکل "123L" b/79563966 - آرگومان های بسته بندی شده اکنون با استفاده از یک نام کلاس کاملاً واجد شرایط برای
app:type. تنها مقدار پیش فرض پشتیبانی شده"@null"b/79563966 است - کلاسهای args اکنون
equals()وhashCode()B/79642246 را پیاده سازی می کنند - افزونه Safe Args اکنون می تواند در پروژه های کتابخانه B/80036553 اعمال شود
- افزونه Safe Args اکنون می تواند برای پروژه های ویژگی B/110011752 اعمال شود
رفع اشکال
- مشکلات رفع شده هنگام حرکت در طول روشهای چرخه عمر قطعه b/109916080
- مشکلات رفع شده هنگام پیمایش از طریق نمودارهای تو در تو چندین بار b/110178671
- مشکلات رفع شده هنگام استفاده از
setPopUpToبا اولین مقصد در نمودار B/109909461 - مسئله ثابت که در آن همه
app:defaultValueبه عنوان رشته های B/110710788 منتقل می شدند - AAPT2 همراه با افزونه Android Gradle 3.2 Beta 01 اکنون قوانین را برای هر
android:namein Navigation XML Files B/79874119 - نشت حافظه ثابت هنگام تعویض پیش فرض FragmentNavigator B/110900142
2 جولای 2018
نسخه های Androidx از چرخه حیات ، اتاق و صفحه بندی نسخه نسخه 2.0.0-beta01 .
چرخه زندگی
رفع اشکال
- قانون Proguard LifecycleObserver ثابت برای حفظ تنها پیاده سازی ها ، نه Subinterfaces B/71389427
- قوانین ثابت ViewModel Proguard اجازه می دهد
اتاق
API / رفتار تغییر می کند
- اضافه شده
RoomDatabase.Builder.setQueryExecutor()برای اجازه دادن به سفارشی سازی جایی که نمایش داده شد - پشتیبانی
ObservableRxjava2 اضافه شده است - اجرای DAO و پایگاه داده اکنون نهایی است
رفع اشکال
- نام کلاس/فیلد را در خطای "نمی توانید پیدا کنید برای زمینه پیدا کنید" خطای b/73334503 را مشخص کنید
- سازگاری اتاق بازپرداخت به عقب با نسخه های قدیمی تر اتاق B/110197391
صفحه بندی
رفع اشکال
- ناپدید شدن محتوای ثابت در برخی موارد پیش پرداخت (متغیرهای غیرفعال ، PositionalDataSource) B/80149146
- (قبلاً در
1.0.1منتشر شده است) تصادفات ثابت که در آنPagedListAdapterوAsyncPagedListDifferنتوانسته است وقایع حرکت را نشان دهد. b/110711937
26 ژوئن 2018
صفحه بندی
صفحه بندی 1.0.1 با یک اشکالات منفرد در runtime منتشر می شود. ما به شدت استفاده از 1.0.1 را برای ثبات توصیه می کنیم. صفحه بندی Rxjava2 1.0.1 نیز منتشر شده و با 1.0.0-rc1 یکسان است.
رفع اشکال
- تصادفات ثابت که در آن
PagedListAdapterوAsyncPagedListDifferدر سیگنال حوادث حرکت نمی کنند. b/110711937
کارگر
WorkManager 1.0.0-alpha04 منتشر می شود.
رفع اشکال
اکنون در هنگام استفاده از اجرای مبتنی بر
AlarmManagerPeriodicWorkRequestاکنون به درستی دوباره برنامه ریزی شده اند.پس از توقف نیرو یا راه اندازی مجدد ، یک ANR بالقوه را برطرف کرد. b/110507716
حاشیه نویسی های تهی به API های مختلف کارگر اضافه شده است. b/110344065
استثنائات نامشخصی که در هنگام اجرای کار اتفاق می افتد. b/109900862
در صورت تصمیم گیری برای بازگشت به نسخه قدیمی تر WorkManager ، مهاجرت های دشتر را مجاز می کند. b/74633270
در صورت ایجاد برچسب های ضمنی تکراری ، تصادف مهاجرت را برطرف کنید. این یک مسئله بسیار نادر است که فقط در صورت استفاده از همان قالب برچسب ضمنی خودتان اتفاق افتاد.
19 ژوئن 2018
اتاق
اتاق 1.1.1 منتشر شده است. این نسخه با اتاق 1.1.1-rc1 یکسان است.
کارگر
WorkManager 1.0.0-alpha03 منتشر می شود.
رفع اشکال
رفع شرایط مسابقه در اجرای مبتنی بر
AlarmManager. B/80346526 .پس از راه اندازی مجدد دستگاه ، کارهای تکراری را در هنگام استفاده از
JobSchedulerثابت کرد.مشاغل با محتوای URI اکنون در راه اندازی مجدد ادامه دارند. b/80234744
به روزرسانی مستندات. B/109827628 ، B/109758949 ، B/80230748
هنگامی که دوباره یک
WorkRequestانجام داد ، تصادف را برطرف کرد. B/109572353 .هشدارهای کامپایلر Kotlin ثابت هنگام استفاده از وابستگی
work-runtime-ktx.WorkManager اکنون از نسخه
Room1.1.1-rc1استفاده می کند.
تغییرات API
اضافه شده
getStatusesSync()، نسخه همزمانWorkContinuation.getStatuses().Workerتوانایی تمایز بین لغو کاربر و توقف موقت سیستم عامل را دارد. در صورت درخواست هر نوع توقفtrueWorker.isStopped().Worker.isCancelled()هنگامی که کار به صراحت لغو شده است ،trueاست. b/79632247پشتیبانی از پارامترهای شغلی#GetNetwork () را در API 28 اضافه کنید. این از طریق
Worker.getNetwork()در معرض دید قرار می گیرد.Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)اضافه شده است ، بنابراین می توانید چه تعداد شغل را می توان بهJobSchedulerیاAlarmManagerارسال کرد. این امر به جلوگیری از گرفتن همه اسلات های موجودJobSchedulerWorkManagerکمک می کند.Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)JobSchedulerشدهWorkManager. b/79996760Worker.getRunAttemptCount()تعداد فعلی را برای یکWorkerمعین باز می گرداند. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)به شما امکان می دهد تا یکPeriodicWorkRequestمنحصر به فرد را انتخاب کنید. b/79600647WorkManager.cancelAllWork()همهWorkerرا لغو می کند. كتابخانه هایی كه بهWorkManagerوابسته هستند می توانند وقتی این روش با استفاده ازWorkManager.getLastCancelAllTimeMillis()برای پاکسازی بیشتر وضعیت داخلی ، از این روش استفاده می كنند ، پرس و جو كنند.اضافه شده
WorkManager.pruneWork()برای حذف مشاغل تکمیل شده از پایگاه داده داخلی. B/79950952 ، B/109710758
تغییرات رفتار
- یک برچسب ضمنی برای همه
WorkRequestS ، که نام کلاس کاملاً واجد شرایط برایWorkerاست ، اضافه کرد. این امکان را برای حذفWorkRequestS بدونtagS یا زمانی کهidدر دسترس نیست ، امکان می دهد. b/109572351
تغییر تغییرات
تغییر نام به
Worker.WorkerResultبهWorker.Result.Worker.onStoppedاکنون یک پارامترisCancelledاضافی دارد که هنگام لغوWorkerبه صراحتtrueشده است.
7 ژوئن 2018
ناوبری 1.0.0-alpha02 منتشر می شود.
ناوبری
تغییرات رفتار
FragmentNavigatorدر حال حاضر ازsetReorderingAllowed(true)استفاده می کند. b/109826220ناوبری اکنون استدلال های Urldecodes از URL های پیوندهای عمیق تجزیه شده است. b/79982454
رفع اشکال
هنگام فراخوانی از روشهای چرخه عمر قطعه ، یک
IllegalStateExceptionبرطرف کنید. b/79632233ناوبری اکنون به کتابخانه پشتیبانی 27.1.1 بستگی دارد تا هنگام استفاده از انیمیشن ها ، سوسو زدن را برطرف کند. b/80160903
هنگام استفاده از DefaultNavHost = "true" به عنوان یک قطعه کودک ، یک
IllegalArgumentExceptionبرطرف کرد. b/79656847هنگام استفاده از NavdeePlinkBuilder ، یک
StackOverflowErrorبرطرف کرد. B/109653065هنگام حرکت به یک نمودار تو در تو ، یک
IllegalArgumentExceptionبرطرف کرد. b/80453447هنگام استفاده از
launchSingleTop، مسئله ای را با همپوشانی قطعات حل کرد. b/79407969ناوبری اکنون پشته درست مصنوعی مصنوعی را برای نمودارهای تو در تو می سازد. b/79734195
NavigationUi اکنون هنگام استفاده از نمودار تو در تو به عنوان
MenuItemمورد صحیح را برجسته می کند. b/109675998
تغییرات API
ویژگی
clearTaskبرای اقدامات و API مرتبط درNavOptionsکاهش یافته است. b/80338878ویژگی
launchDocumentبرای اقدامات و API مرتبط درNavOptionsکاهش یافته است. b/109806636
24 مه 2018
WorkManager 1.0.0-alpha02 منتشر می شود.
کارگر
رفع اشکال
رفع
NullPointerExceptionدرState.isFinished(). b/79550068مسئله ای که باعث شده است که
WorkerدرApplication.onCreate()برنامه ریزی مجدد شوند. b/79660657مسئله ای را برطرف کرد که در آن می توانید کار بیشتری را از آنچه توسط سیستم عامل مجاز است برنامه ریزی کنید. b/79497378
پاکسازی قفل های بیداری مرتبط با
Workerبه موضوع پس زمینه منتقل شد.اجرای
AlarmManagerاکنون به طور صحیح پاک می شود که تمام کار در انتظار کامل باشد.پاکسازی ثابت SQL که بر محلی های غیر انگلیسی تأثیر می گذارد. b/80065360
پشتیبانی از
floatدرDataاضافه شده است. b/79443878Data.Builder.putAll()اکنون نمونه ای ازBuilderرا برمی گرداند. b/79699162Javadoc بیشتر و در مستندات اصلاح می شود. b/79691663
تغییرات API
Workerمی تواند نسبت به متوقف شدن واکنش نشان دهد.Worker.isStopped()می تواند برای بررسی اینکه آیا یکWorkerمتوقف شده است استفاده شود.Worker.onStopped()می تواند برای انجام عملیات پاکسازی سبک استفاده شود.Worker.getTags()APISetای از برچسب های مرتبط باWorkerرا برمی گرداند.اضافه شده
javax.time.Durationاضافه بار برای API ها که ترکیبی از مدت زمان وTimeUnitرا به خود اختصاص می دهد. این توسط@RequiresApi(26).پسوندهای
WorkManagerاز بستهandroidx.work.ktxبه بستهandroidx.workمنتقل شده اند. پسوندهای قدیمی مستهلک می شوند و در نسخه بعدی حذف می شوند.Configuration.withExecutor()کاهش می یابد. به جای آنConfiguration.setExecutor()استفاده کنید.
16 مه 2018
صفحه بندی Rxjava2 1.0.0-rc1 و اتاق 1.1.1-rc1 منتشر می شود. اگر از مهاجرت استفاده می کنید ، از اتاق 1.1.1-rc1 به جای 1.1.0 استفاده می کنیم.
اتاق
رفع اشکالی که در آن اتاق نمی تواند به درستی پس از مهاجرت را انجام دهد به درستی b/79362399
صفحه بندی
Paging rxjava2 در حال حرکت به سمت آزادی نامزد بدون تغییر از آلفا اولیه است.
8 مه 2018
صفحه بندی 1.0 ، ناوبری و کارگر Alphas ، اتاق 1.1 ، Androidx
صفحه بندی 1.0.0 و اتاق 1.1.0 به همراه ALPHAS برای دو مؤلفه معماری جدید - ناوبری و کارگر.
صفحه بندی و اتاق از آخرین نامزدهای انتشار هیچ تغییری ندارند.
کتابخانه جدید: ناوبری
ناوبری چارچوبی برای ایجاد ناوبری در برنامه فراهم می کند. این نسخه اولیه 1.0.0-alpha01 است.
کتابخانه جدید: کارگر
WorkManager برنامه ریزی و اجرای کار پس زمینه تضمین شده و محدودیت را ساده می کند. این نسخه اولیه 1.0.0-alpha01 است.
Androidx
اجزای معماری در حال حرکت به بخشی از Androidx هستند ، از جمله نام های بسته بندی شده به روز شده ، نام مصنوعات و وابستگی به سایر کتابخانه های Androidx. اینها تحت نسخه 2.0.0-alpha1 منتشر می شوند تا در رابطه با سایر کتابخانه های Androidx استفاده کنند.
پسوند کوتلین
ViewModel ، Rectivestreams و SQLite (قبلاً "پایگاه داده" از اتاق) همه دارای کتابخانه های پسوند Kotlin هستند که به عنوان بخشی از انتشار Androidx Alpha اضافه شده اند. علاوه بر این ، ناوبری و کارگر شامل ماژول های KTX هستند. هر یک از این ماژول های پسوند را می توان در افزودن قطعات یافت.
2 مه 2018
- اتاق 1.1.0 نامزد انتشار
- اتاق
1.1.0-rc1منتشر می شود.
رفع اشکال
- اکنون اتاق با Kotlin
1.2.40سازگار است. b/78328708
19 آوریل 2018
کاندیدای آزادی صفحه
صفحه بندی 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 به یک رابطه رابطه ای که در جاوا B/78199923 تعریف شده است ، مراجعه می کند
5 آوریل 2018
اتاق 1.1.0-beta2 ، صفحه بندی 1.0.0-beta1 و صفحه بندی Rxjava 1.0.0-alpha1 منتشر می شود.
صفحه بندی برای مدت کوتاهی قبل از پیشرفت برای انتشار نامزد در بتا خواهد بود. ما در حال برنامه ریزی برای تغییرات بیشتر API برای Paging 1.0 نیستیم و نوار برای هرگونه تغییر API بسیار زیاد است.
پشتیبانی Alpha Rxjava2 برای صفحه بندی به عنوان یک ماژول اختیاری جداگانه ( android.arch.paging:rxjava2:1.0.0-alpha1 ) منتشر می شود و تا زمانی که تثبیت شود ، به طور موقت نسخه می شوند.
این کتابخانه جدید جایگزین Rxjava2 برای LivePagedListBuilder ، قادر به ساخت S Observable و S Flowable ، با استفاده از Scheduler به جای Executor است:
کاتلین
val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable()
جاوا
Observable<PagedList<Item>> pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable();
صفحه بندی
ویژگی های جدید
-
RxPagedListBuilderاز طریقandroid.arch.paging:rxjava2Artifact اضافه می شود.
تغییرات API
API برای روشن شدن نقش مجریان در سازندگان تغییر می کند:
تغییر نام نامگذاری
setBackgroundThreadExecutor()بهsetFetchExecutor()(درPagedList.BuilderوLivePagedListBuilder)تغییر نام نامگذاری
setMainThreadExecutor()بهsetNotifyExecutor()(درPagedList.Builder).
ثابت
PagedList.mCallbacksعضو خصوصی است.
رفع اشکال
LivePagedListBuilderبه جای اجزای قوس IO Thread Pool ، بار اولیهPagedListبر روی مجری مشخص شده ایجاد می کند.رفتار نامعتبر ثابت در بسته بندی های
DataSourceداخلی (برای اجرایDataSource.mapو همچنین بارگیریPositionalDataSourceدر محل کار با استفاده از محل کاربرد) B/77237534 استفاده می شود.
اتاق
رفع اشکال
رفع یک اشکال مهم در RX Single Rx
SingleوMaybeپیاده سازی هایی که در آن می تواند پرس و جو را قبل از زمان بازیافت کند ، در صورت اضافه کردن بیش از 1 ناظر بهSingleیاMaybeInstancces ، باعث ایجاد مشکل می شود. b/76031240اگر در داخل معامله فراخوانی شود ، ClearAlltables در پایگاه داده
VACUUMنمی شود. b/77235565
21 مارس 2018
اتاق 1.1.0-beta1 ، صفحه بندی 1.0.0-alpha7 و Lifecycles 1.1.1 منتشر می شود.
اتاق
تغییرات API
- بر اساس بازخورد مرور API ،
@RawQueryدیگر عبور از یکStringبه عنوان پارامتر پرس و جو قبول نمی کند. شما باید از SupportsQLiteQuery استفاده کنید. (به SimplesQLiteQuery مراجعه کنید تا به راحتی نمونه ای از SupportSqliteQuery با پشتیبانی استدلال ایجاد کنید). - روش RoomDatabase.Builder's FallbacktodestructiveMigrationFrom اکنون
vararg intبه جایvararg Integerمی پذیرد.
رفع اشکال
roomDatabase.ClearAllTables اکنون سعی می کند با تنظیم یک پاسگاه WAL و
VACUUMپایگاه داده ، فضای را به سیستم عامل برگرداند.@RawQueryاکنون هرگونه pojo را برای خاصیتobservedEntitiesمی پذیرد تا زمانی که POJO از طریق زمینه هایEmbeddedیاRelationخود به یک یا چند نهاد مراجعه کند. b/74041772صفحه بندی: اجرای داده های اتاق اکنون به درستی وابستگی های چند جدول (مانند روابط و پیوستن) را به درستی کنترل می کند. پیش از این اینها نتوانسته اند نتایج جدید را تحریک کنند ، یا نمی توانند در کامپایل شوند. b/74128314
چرخه های زندگی
فقط یک تغییر کوچک: android.arch.core.util.Function از arch:runtime به arch:common منتقل می شود. این اجازه می دهد تا بدون وابستگی به زمان اجرا ، به عنوان مثال در paging:common .
lifecycle:common وابستگی به lifecycle:runtime است ، بنابراین این تغییر بر lifecycle:runtime به طور مستقیم ، فقط ماژول هایی که مستقیماً به lifecycle:common ، همانطور که صفحه بندی انجام می دهد.
صفحه بندی
صفحه بندی 1.0.0-alpha7 در کنار چرخه حیات 1.1.1 منتشر می شود. از آنجا که Paging Alpha7 به حرکت کلاس Function ذکر شده در بالا بستگی دارد ، باید lifecycle:runtime به android.arch.lifecycle:runtime:1.1.1 .
Paging alpha7 برنامه ریزی شده است که نسخه نهایی قبل از بازدید از بتا باشد.
تغییرات API
-
DataSource.LoadParamsاشیاء اکنون یک سازنده عمومی دارند وDataSource.LoadCallbackاشیاء اکنون انتزاعی هستند. این امکان بسته بندی یکDataSourceیا آزمایش مستقیم یکDataSourceبا پاسخ به مسخره امکان پذیر می کند. b/72600421 - نقشه برداران برای منبع داده و داده های داده
-
map(Function<IN,OUT>)به شما امکان می دهد نتایج بارگذاری شده توسط یکDataSourceرا تبدیل ، بسته بندی یا تزئین کنید. -
mapByPage(<List<IN>,List<OUT>>)برای پردازش دسته ای یکسان را امکان پذیر می کند (به عنوان مثال اگر موارد بارگیری شده از SQL علاوه بر این یک پایگاه داده جداگانه را جستجو کنید ، که می تواند به عنوان یک دسته انجام شود.)
-
-
PagedList#getDataSource()به عنوان یک روش راحتی B/72611341 اضافه می شود - تمام کلاسهای مستهلک شده از API حذف شده اند ، از جمله بقایای
LivePagedListProviderrecyclerview.extensions. -
DataSource.Factoryاز یک رابط به یک کلاس انتزاعی تغییر می یابد تا عملکرد نقشه را فعال کند.
رفع اشکال
- سازندگان را تغییر داد تا نهایی شوند. b/70848565
- اجرای
DataSourceاتاق اکنون برای رسیدگی به نمایش داده های چند جدول ثابت است-این تعمیر در اتاق 1.1.0-beta1 موجود است ، به بالا مراجعه کنید. - رفع اشکال در جایی که
BoundaryCallback.onItemAtEndLoadedدر صورت فعال بودن مکان ها برایPositionalDataSourceمورد استفاده قرار نمی گیرد و اندازه کل چند اندازه دقیق از اندازه صفحه است.
2 مارس 2018
اتاق 1.1.0-alpha3 منتشر می شود. این آخرین نسخه برنامه ریزی شده آلفا برای اتاق 1.1.0 است.
تغییرات API
روشهای
addObserverremoveObserverinalidationtracker اکنون همزمان همزمان هستند و باید در یک موضوع غیر UI فراخوانی شوند. این مانع از برخی شرایط مسابقه در هنگام مشاهده جداول می شود.یک روش جدید
clearAllTables()در کلاس RoomDatabase وجود دارد که تمام محتوای جدول را کوتاه می کند. b/63807999SupportSQLiteQueryاکنون یک روشgetArgCount()دارد که تعداد پارامترهای پرس و جو را برمی گرداند. b/67038952
رفع اشکال
@RawQueryاکنون به درستی برای پرس و جوهای صفحه بندی پشتیبانی می شود. b/72600425اتاق اکنون به درستی نام های
Daoایجاد شده است تا از درگیری نام خودداری کنید وقتی 2 یا بیشتر رابطDaoکلاس های داخلی در یک بسته مشابه هستند و دارای یک نام هستند. b/73536380انواع زمینه های عمومی در
Pojoبه عنوان عضو کلاس گسترده به درستی تجزیه می شوند. b/73534868پارامترهای پرس و جو در رابط های
Daoکه از مصنوعات وابستگی به ارث می برند ، اکنون به درستی تجزیه شده اند. b/68118746نمایش داده شدگان برای
@Relations اکنون به درستی از نام های میدان فرار می کنند. b/70925483
27 فوریه 2018
صفحه بندی 1.0.0-alpha6 در کنار انتشار کتابخانه پشتیبانی 27.1.0 منتشر می شود. ListAdapter و چند کلاس مرتبط از کتابخانه صفحه بندی مستقیماً به بازیافت منتقل شده اند ، در کنار چند تغییر نام برای عملکرد برخی از کلاس های خاص. این انتشار صفحه بندی آلفا احتمالاً آخرین موردی است که دارای تغییرات قابل توجهی در شکستن API است.
تغییرات API
- کلاس ها به RecyClerview-V7 منتقل شدند:
-
ListAdapter
-
- کلاس ها تغییر نام دادند و به Recyclerview-V7 منتقل شدند:
-
ListAdapterHelper->AsyncListDiffer -
ListAdapterConfig->AsyncDifferConfig -
DiffCallback->DiffUtil.ItemCallback
-
- کلاس ها به داخل صفحه بندی تغییر نام دادند:
-
PagedListAdapterHelper->AsyncPagedListDiffer
-
کلاس هایی که منتقل شدند در کنار بازیافت ، مستقل از کتابخانه صفحه بندی مفید بودند. این بدان معناست که آنها می توانند بدون بسته به انتشار آلفا صفحه بندی مورد استفاده قرار گیرند ، اما همچنین به این معنی است که برنامه هایی با استفاده از صفحه بندی باید به آلفا 6 ارتقا دهند و همزمان از کتابخانه 27.1.0 پشتیبانی کنند.
** راهنمای مهاجرت برای صفحه بندی Alpha6: **
- وابستگی صفحه بندی و بازیافت و بازیافت را به
android.arch.paging:runtime:1.0.0-alpha6وcom.android.support:recyclerview-v7:27.1.0به روز کنید.- این کارها باید همزمان انجام شود ، زیرا ListAdapter از صفحه بندی به RecyClerview منتقل شد
- هرگونه ارجاع از
ListAdapterHelperبهAsyncListDifferرا به روز کنید-
getItem(index)/getItemCount()به نفع الگوی فراخوانیgetCurrentList().getItem(index)وgetCurrentList().size()، که صریح تر هستند ، حذف شده اند.
-
- هرگونه ارجاع از
ListAdapterConfigرا بهAsyncDifferConfigبه روز کنید - هرگونه ارجاع از
DiffCallbackرا بهDiffUtil.IttemCallbackبه روز کنید - هرگونه ارجاع از
PagedListAdapterHelperبهAsyncPagedListDifferرا به روز کنید - به روزرسانی منابع
setList()برایsubmitList()- برای روشن شدن ماهیت async از لیست متفاوت تغییر نام داد
رفع اشکال
- عبور ثابت موقعیت اولیه نادرست به بار اولیه در هنگام غیرفعال کردن مکان ها. b/73513780
15 فوریه 2018
اتاق 1.1.0-alpha2 منتشر می شود.
ویژگی های جدید
اتاق اکنون از باز کردن بانک اطلاعاتی در حالت ورود به سیستم پشتیبانی می کند. در این حالت ، نوشتن شما دیگر نمایش داده های خوانده شده شما را مسدود نمی کند. حتی اگر حافظه بیشتری مصرف کند (به دلیل اتصالات متعدد) ، این حالت معمولاً سریعتر است. به طور پیش فرض ، اگر دستگاه
API 16یا بالاتر باشد ، از Wal استفاده می کند و یک دستگاه حافظه کم نیست . شما می توانید این رفتار را با استفاده از روشsetJournalMode()درRoomDatabase.Builderکنترل کنید. b/67757002پشتیبانی Guava : اتاق اکنون از بازگشت گواوا
Optional<T>یاListenableFuture<T>درDAOپشتیبانی می کند. برای استفاده ازListenableFuture<T>، شما باید مصنوعاتguavaاز اتاق وارد کنید (android.arch.persistence.room:guava:1.1.0-alpha2).اتاق اکنون از بازگشت
java.util.Optional<T>از نمایش داده هایDAOپشتیبانی می کند.روش های رابط با پیاده سازی های پیش فرض اکنون در روش های
@Transactionدر کلاس هایDAOپشتیبانی می شوند. این برای هر دوJava 8وKotlinکار می کند. b/72416735
رفع اشکال
سازندگان با
@Relationدر صورت وجود سازنده دیگری که می توان از آن استفاده کرد ، خطای تلفیقی ایجاد نمی کند. b/72884434نام های جدول با روش
@Query'حال حاضر به درستی برای ردیاب نامعتبر فرار می شوند. b/72366965اتاق اکنون از حاشیه نویسی های
@Metadataبرای خواندن ساختار کلاس در طول پردازش حاشیه نویسی استفاده می کند. این بدان معنی است که ، حتی اگر یک POJO از وابستگی به ارث ببرد ، نام پارامتر سازنده آن به درستی قابل خواندن است. b/67181813مشکلی در یافتن مسیرهای مهاجرت کاهش یافته است. b/72153525
انواع ستون های غیر پیش فرض هنگام مهاجرت از یک پایگاه داده موجود به اتاق ، اکنون به درستی اداره می شوند. b/71953987
اکنون اتاق به درستی ادامه دارد که
boolean?زمینه ها در کلاس های کوتلین. b/72786402
22 ژانویه 2018
Lifecycles 1.1.0 ، اتاق 1.1.0-alpha1 و صفحه بندی 1.0.0-alpha5 منتشر می شود.
چرخه عمر 1.1.0
تغییرات بسته بندی
وابستگی های جدید و بسیار کوچکتر اکنون در دسترس است:
-
android.arch.lifecycle:livedata:1.1.0 -
android.arch.lifecycle:viewmodel:1.1.0
تغییرات API
- هم اکنون
LifecycleActivityوLifecycleFragmentمحروم حذف شده است - لطفاًFragmentActivity،AppCompatActivityیاFragmentپشتیبانی استفاده کنید. - حاشیه نویسی
@NonNullبهViewModelProvidersوViewModelStoresاضافه شده است - سازنده
ViewModelProvidersکاهش یافته است - لطفاً از روشهای استاتیک آن مستقیم استفاده کنید -
ViewModelProviders.DefaultFactoryمستهلک شده است - لطفاً ازViewModelProvider.AndroidViewModelFactoryاستفاده کنید - روش Static
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)برای بازیابی یکFactoryاستاتیک مناسب برای ایجاد نمونه هایViewModelوAndroidViewModelاضافه شده است.
اتاق 1.1.0-alpha1
ویژگی های جدید
-
RawQuery: این API جدید به روشهای@Daoاجازه می دهد SQL را به عنوان یک پارامتر پرس و جو B/62103290 ، B/71458963 دریافت کنند -
fallBackToDestructiveMigrationsFrom: این API جدید درRoomDatabase.Builderاجازه می دهد تا کنترل دانه ای ظریف بر روی کدام یک از برنامه های طرح شروع کند که مهاجرت های مخرب مجاز هستند (در مقایسه با FallbacktodestructiveMigration) B/64989640 - اتاق اکنون فقط از API های صفحه بندی جدیدتر (Alpha-4+) پشتیبانی می کند و پشتیبانی از برنامه های
LivePagedListProviderرا کاهش می دهد. برای استفاده از اتاق جدید آلفا ، باید از صفحه بندیalpha-4یا بالاتر استفاده کنید و اگر قبلاً چنین نکرده اید ، ازLivePagedListProviderبهLivePagedListBuilderتغییر دهید.
رفع اشکال
- پشتیبانی بهبود یافته از انواع Kotlin Kapt. B/69164099
- ترتیب زمینه ها دیگر طرحواره را باطل نمی کنند. b/64290754
صفحه بندی 1.0.0-alpha5
رفع اشکال
- بارگذاری صفحه هنگام غیرفعال کردن محل کار B/70573345
- ورود به سیستم اضافی برای ردیابی اشکال غیرقانونی leargumentexception b/70360195 (و رفع جانبی اتاق سوداگرانه)
- کد نمونه Javadoc B/70411933 ، B/71467637
11 دسامبر 2017
صفحه بندی alpha4-1 منتشر می شود. این یک نسخه کوچک اشکالات برای صفحه بندی آلفا 4 است.
رفع اشکال
- پارامترهای پاسخ به تماس را برای منابع داده نامعتبر بررسی نکنید. B/70353706 ، B/70360195
7 دسامبر 2017
Paging alpha4 با تغییرات و اضافات قابل توجهی ، بیشتر شبکه هدفمند و شبکه + پایگاه داده USECases منتشر می شود.
تغییرات API
DataSourceاکنون یک API ASYNC است ، تا صفحه بندی را مستقیماً از شبکه آسانتر کند:- یک نقطه ورودی برای اندازه و داده های اولیه
- با نگه داشتن پاسخ به تماس ، و اعزام بعداً از شبکه پشتیبانی می کند
- تماس های برگشتی ThreadSafe اجازه می دهد تا ASYNC برای ایجاد
PagedListبا پشتیبان یک شبکه در موضوع UI ، بارگذاری کند. - رفتار خطای واضح تر در مورد پارامترهای بار اولیه
TiledDataSourceبهPositionalDataSourceتغییر نام داده می شود تا نمایه سازی مبتنی بر موقعیت خود را منعکس کند ، و این واقعیت که در هنگام غیرفعال کردن محل کار ، کاشی نمی شود.PageKeyedDataSourceبرای پشتیبانی از نشانه های بعدی/قبلی تعبیه شده در بارهای صفحه شبکه اضافه می شود.KeyedDataSourceبرای روشن شدن تفاوت بهItemKeyedDataSourceتغییر نام داد.LivePagedListBuilderوDataSource.FactoryجایگزینLivePagedListProvider. سازنده با سفارشی سازی بیشتر و پیش فرض های ساده تر ، همین توانایی را فراهم می کند. این کارخانه اجازه می دهد تا کد تولیدDataSourceمستقل ازLiveDataباشد.PagedList.BoundaryCallbackبرای پایگاه داده + شبکه USECase اضافه شده است.سازنده
PagedList.BuilderDataSource+PagedList.Configرا می گیرد ، اکنون بیشتر شبیهLivePagedListBuilderاست و به اپراتور الماس به زبان جاوا اجازه می دهد ، یا انواع استنباط شده در کوتلین.PagedList.getConfig()اضافه شده ، وPagedList.Configاکنون دارای ویژگی های عضو عمومی است.KeyedDataSource.loadBefore()دیگر انتظار ندارد که نتایج معکوس شود.PagedListAdapter.onCurrentListChanged()برای گوش دادن به به روزرسانی هایی که در آن PageDlist نمایش داده می شود ، اضافه شده است.
رفع اشکال
- indexoutOfBoundSexception ثابت در PagedListAdapter (یاور) B/67883658
1.0.0 - 6 نوامبر 2017
همه مؤلفه های اصلی (به جز صفحه بندی) اکنون 1.0.0 هستند. این دقیقاً همان نسخه rc1 است به جز یک تغییر در کتابخانه reactivestreams .
رفع اشکال
-
LiveDataReactiveStreamsاکنون مشخصات جریان واکنشی را به درستی پیاده سازی می کند. B/67999342
نامزد انتشار - 18 اکتبر 2017
همه مصنوعات اصلی (به جز صفحه بندی) اکنون 1.0.0-rc1 هستند.
ما هیچ مسئله شناخته شده دیگری یا ویژگی های جدید برنامه ریزی شده برای نسخه 1.0.0 نداریم . لطفاً پروژه های خود را برای استفاده از 1.0.0-rc1 ارتقا دهید و به ما در تست آن کمک کنید تا بتوانیم یک سنگ جامد 1.0.0 را حمل کنیم.
تغییر رفتار
- با این نسخه ،
Lifecycle.Event#ON_STOPاکنون هنگامی کهonSaveInstanceStateفراخوانده می شود ، اعزام می شود (قبلی ، این فقط به عنوانCREATEDبدون اعزامON_STOPمشخص شده بود). می توانید اطلاعات بیشتر در مورد آن را در مستندات Lifecycles بخوانید.
رفع اشکال
اتاق:
- اکنون اتاق به جدیدترین مصنوعات Xerial بستگی دارد که مشکلات
OutOfMemoryدر هنگام تدوین را برطرف می کند. b/62473121 - روشهای
Queryاکنون می توانند با@Transactionحاشیه نویسی شوند. برای جزئیات بیشتر به اسناد مرجع در@Transactionمراجعه کنید. b/65112315 - کلاس
StringUtilدر اتاق از API عمومی خارج می شود (هرگز به عنوان API عمومی در نظر گرفته نشده بود).
- اکنون اتاق به جدیدترین مصنوعات Xerial بستگی دارد که مشکلات
چرخه عمر:
LiveDataبه درستی کار می کند وقتی که فعالیت تا حدی در API پوشش داده می شود <24. B/65665621روشهای
OnLifecycleEventدر کلاس های والدین اکنون به درستی خوانده می شوند یا در صورت امکان هشدار در هنگام تدوین چاپ می شود. b/63474615چرخه عمر در حال حاضر دارای
WeakReferenceبه چرخه حیات خود برای جلوگیری از نشت چرخه حیات در صورت نگه داشتن چرخه عمر در حافظه طولانی تر از حد معمول است (این فقط یک احتیاط است ، شما هنوز هم باید مراقب باشید کهLifecycleنشت نکنید).
9 اکتبر 2017
صفحه بندی alpha-3 منتشر می شود. که آن را با انتشار beta 2 از آب و اتاق زندگی سازگار می کند.
رفع اشکال
- مستندات صفحه بندی بهبود یافته.
5 اکتبر 2017
همه آثار باستانی اصلی (به جز صفحه بندی) اکنون beta 2 هستند. در این نسخه نسخه جدیدی از صفحه بندی وجود ندارد.
رفع اشکال
چرخه عمر:
- وقتی
LiveDataReactiveStreamsLiveDataنیست ، اکنون به درستی از ناشر منبع ارتباط برقرار نمی کند. b/62609183 - هنگامی که کلاس والدین از یک ماژول دیگر است ، حوادث چرخه عمر به درستی به کلاس های والدین پخش می شود. b/63474615
- Livedata به درستی ناظران را در هنگام اشتراک در هنگام ایجاد زیرمجموعه به دست می آورد. b/66337741
FullLifecycleObserverبرای Artifact زبان Java 8 اکنون در درخت وابستگی موجود است. b/66525578برای Proguard ، لطفاً خطوط زیر را به پرونده Proguard خود اضافه کنید. (این در هنگام ارسال 1.0.0 کشتی لازم نخواهد بود)
-
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
-
- وقتی
اتاق:
- اتاق اکنون خطایی را در زمان کامپایل چاپ می کند وقتی که pojo برگشتی به روش
@Queryدارای یک قسمت@NonNullاست که با هیچ یک از ستون های پاسخ پرس و جو مطابقت ندارد. اگر این زمینه@Nullableباشد ، اتاق فقط یک هشدار را چاپ می کند. b/67115337 - اکنون اتاق شاخص ها را در نسخه های جدید سیستم عامل تأیید می کند. b/63132683
- در صورت وجود چندین سازنده تطبیق در یک pojo ، سازنده No-ARG را به طور پیش فرض انتخاب می کند. b/67353427
- اگر یک
IntegerیاLongباشد ، کلیدهای اصلی تک ستون قابلNullableهستند. b/67086876 - ردیاب بی اعتبار به درستی ورود مجدد را در حالت تست انجام می دهد. b/65471397
- اکنون اتاق شخصیت های نامعتبر را در نام ستون و جدول در زمان کامپایل بررسی می کند (شخصیت های نامعتبر:
`،"). b/64749111
- اتاق اکنون خطایی را در زمان کامپایل چاپ می کند وقتی که pojo برگشتی به روش
21 سپتامبر 2017
با این نسخه ، تمام ماژول های مؤلفه های معماری به حداقل beta 1 می رسند (به جز کتابخانه جدید صفحه بندی که alpha 2 است).
ما دیگر قصد تغییر API را نداریم. تغییرات غیرمترقبه ممکن است اتفاق بیفتد ، اما نوار تغییر هر API قبل از 1.0.0 پایدار بسیار زیاد است و بعید است که اتفاق بیفتد.
- Lifecycleactivity & LifecycleFragment قبل از
1.0.0پایدار برداشته می شود. آنها هنگام استفاده از کتابخانه پشتیبانی26.1.0یا بعد از آن مورد نیاز نیستند.
بر خلاف فاز آلفا ، مرحله بتا قرار است مدت زمان بسیار کوتاهی باشد.
نسخه تغییر می کند
- پسوند چرخه عمر و اتاق اکنون
beta 1است - صفحه بندی اکنون
alpha 2است - هیچ تغییری در چرخه حیات (زمان اجرا ، مشترک) و هسته قوس (مشترک) وجود ندارد. هر دوی این مصنوعات از 13 سپتامبر نسخه
1.0.0هستند.
مصنوعات جدید
در حال حاضر چرخه های زندگی دارای مصنوعات جدیدی به نام
common-java8هستند. این مصنوعات حاوی رابط جدیدی به نام DefaultLifecycleObserver است. که اجرای پیش فرض برای همه روشهای چرخه عمر دارد. If you are using Java 8 language, you should prefer this artifact over annotations.- Due to a bug in
beta1, you need to add an explicit dependency onandroid.arch.lifecycle:common:1.0.1module to use the newcommon-java8artifact. This issue will be fixed inbeta2.
- Due to a bug in
Packaging Changes
-
android.arch.persistence.room.dbhas been moved toandroid.arch.persistence.db -
android.arch.persistence.room.db-implhas been moved and renamed toandroid.arch.persistence.db-framework
Both of these artifacts are already a dependency on Room so unless you were directly using them, you should not need to change anything in your build files.
تغییرات API
Room:
- @ColumnInfo annotation now supports setting a collation on the column. b/62007004
-
transientfields are now ignored by default unless they are annotated with@ColumnInfo,@Embeddedor@Relation. b/62600692 - Primary Keys must be annotated with
@NonNullunless they are auto generated. b/64292391- This change may require a schema migration. با عرض پوزش برای ناراحتی.
- Added a new convenience annotation ( @Transaction ) which overrides a
DAOmethod and runs it inside a transaction.
Support SQLite Database:
- API changes in database configuration. b/65349673 b/65499876
Paging:
- Improved Paging documentation with more examples and thread annotations.
رفع اشکال
- Room:
- Kotlin multi-line strings in
@Querymethods are handled properly. b/65809374
- Kotlin multi-line strings in
- Paging:
- Paging artifact does not depend on junit anymore. b/65690261
1.0.0 Alpha 9-1 - September 13, 2017
This is a major release where core lifecycle artifacts (runtime, common) and arch core (common) reach to stable version 1.0.0 .
Along with this change, Support Library 26.1.0 now depends on these libraries. Both AppCompatActivity and Support Fragment now implement the LifecycleOwner interface.
This release also depends on Support Library 26.1.0 to take advantage of the new integration.
New Library: Paging
This release also includes a new library called Paging , which allows easily loading large data sets into a RecyclerView in chunks when necessary. Paging is released as alpha1 and will have its own release cycle.
تغییرات API
- The following classes are deprecated and will be removed in a future release:
رفع اشکال
Generated classes are now annotated with
@Generatedif the app has the annotation in the classpath. b/35754819Fixed MediatorLiveData's observer comparison bug. b/64413274
SQLite
WITHqueries are now supported with [LiveData]. [ref-LiveData] b/62510164Fixed a bug where InvalidationTracker would not send the right list if more than 1 table is observed. b/65099281
Fixed a bug where Room would generate different files on Windows. b/64470691
LifecycleObservers in root package are now supported. b/62310817
1.0.0 Alpha 9 - August 16, 2017
رفع اشکال
- Fixed a bug in LiveData , that second Observer was ignored when first one was removed from its
onChangedmethod. b/64285805
1.0.0 Alpha 8 - August 1, 2017
تغییرات رفتار
-
NOT NULLconstraint is added for columns of primitive types or columns annotated with NonNull . This changes the structure of your tables, so if you're already using Architecture Components alpha 7 or earlier, you need to implement a migration if you want to keep the data, or use thefallbackToDestructiveMigration()method in the builder. b/62007004
تغییرات API
- SupportSQLiteProgram now extends AutoCloseable . b/63131997
1.0.0 Alpha 7 - July 26, 2017
رفع اشکال
Fixed critical bug in LifecycleRegistry
removeObservermethod, which broke a LifecycleObserver readdition.Fixed InvalidationTracker for custom databases b/63162311
1.0.0 Alpha 6 - July 25, 2017
تغییر رفتار
The order of LifecycleObserver calls was changed. Previously observers were always called in the order of their addition: if
observer1is added beforeobserver2, it will receiveON_CREATEand all other events beforeobserver2. This is no longer true for destruction events, for them observers are called in the reverse order of addition. So current behavior is: ifobserver1is added beforeobserver2, thenON_CREATEis sent first toobserver1, then toobserver2(same happens forON_STARTandON_RESUME), butON_PAUSEevent is sent first toobserver2and only then toobserver1(same forON_STOPandON_DESTROY).Room throws an exception if migration is missing. Previously Room would just clear the database, but now it crashes. Developers can opt-in to the clearing behavior by calling the builder API. b/63872392
تغییرات API
Added
fallbackToDestructiveMigration()method toRoomDatabase.Builderto clear the database if migration is missing. b/63872392Architecture components now depend on support library 26.0.0
رفع اشکال
Fixed handling @Relation nested into @Embedded . b/63736065
Fixed testing migrations for tables with autoincremented primary key. b/63393618
Now @Queries that run DELETE or UPDATE queries correctly receive arguments. b/63872538
Now ViewModels are retained, when owner fragment is in the backstack and configuration change happens twice. b/38445801
1.0.0 Alpha 5 - July 18, 2017
تغییرات API
Added a new callback method to
RoomDatabase.Builderto observe when a database is created or opened. b/62699324@Query now may return RxJava
MaybeorSingle. b/62231019
You need to depend on android.arch.persistence.room:rxjava2 artifact to add RxJava support to Room.
رفع اشکال
Fixed
@Deletequeries without any parameters. b/63608092Fixed Room type checks for getters and setters. b/63733651
1.0.0 Alpha 4 - July 11, 2017
تغییرات API
Added a new convenience method (
runInTransaction()) to RoomDatabase .@Insert,@Deleteand@Updatemethods can now have parameters from different entity types. b/62682405
رفع اشکال
Fixed
byte[]handling in@Daomethods. b/62460045Migration check in Room now uses case-insensitive comparison. b/62875382
Fixed the proguard configuration for the Lifecycles artifact. b/62113696
1.0.0 Alpha 3 - June 15, 2017
تغییرات API
@OnLifecycleEventsupports only 1 event parameter now. This is a change in preparation for Java 8 support so that we can migrate to interfaces with default methods in the future. In relation to this change, only the@OnLifecycleEvent(ON_ANY)annotated methods can receive a second parameter of typeEvent(first parameter is theLifecycleOwner). See Lifecycle docs for details.LifecycleActivityandLifecycleFragmentclasses are moved into theandroid.arch.lifecycle:extensionsartifact.MigrationTestHelper receives the Instrumentation instance instead of the
Contextto be able to read the schema from the test assets and create the database in the application context.@Insert,@Deleteand@Updateannotations in@DAOmethods can now haveIterableas the parameter type. b/62259820
رفع اشکال
Overridden methods with lifecycle events are not called multiple times anymore.
Multiple
INparameters are now handled properly. b/62608681Abstract DAO classes can now have a constructor that receives the
@Databaseinstance. b/38488747DAO's can now have a super class/interface with type parameters. b/62103620
1.0.0 Alpha 2 - June 2, 2017
تغییرات API
InvalidationTracker callback now receives the list of changed table names. ( b/38468740 )
Reduced the API surface of the SupportSQLiteDatabase class. ( b/38481640 )
رفع اشکال
- Proguard files for lifecycles. ( b/62113696 )
- Loss of data with Type Converters. ( b/62100716 )
- Allow returning
Long[]from@Insertqueries.
1.0.0 آلفا 1 - 17 مه 2017
MinSDK: 14
General advisories
While we did a lot of testing prior to launch, Architecture Components are currently in alpha. If you're building a production app, be aware that the API will change before the 1.0 release and might not be fully robust. If you're not comfortable debugging problems in libraries you use, we recommend trying Architecture Components in side projects first.
We're not recommending that everyone migrate today. We'll have a migration guide ready for the 1.0 release of architecture components.
Known limitations and issues
- Lifecycle
FragmentandActivityCompatin the Support Library do not yet implementLifecycleOwnerinterface. They will when Architecture Components reaches 1.0.0 version.