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 استفاده میکند، اضافه کرد. - به استفاده از وابستگی
Room
1.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
غیر تهی را بهجای یکBundle
nullable 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
بهOnDestinationChangedListener
b/118670572 تغییر نام داده است. -
OnDestinationChangedListener
اکنونBundle
of 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
دیگر یکContext
aosp/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
شما به جایPayload
Result
می دهد.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
باState
CANCELLED
در طولListenableWorker.onStopped()
برمی گرداند. -
Result
null
را بهعنوان شکست در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
شما به جایPayload
Result
می دهد.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
-
tokenizer
FTS در@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 و تعداد روش انجام دادیم. - تلاش برای
initialize
WorkManager
بیش از یک بار در هر فرآیند اکنون منجر به یکIllegalStateException
می شود. این یک تغییر شکسته است.
رفع اشکال
-
WorkRequest.Builder
در آرتیفکتwork-runtime-ktx
اکنون ازListenableWorker
s استفاده می کند. رفع 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
نمی پذیرند. - تلاش برای
initialize
WorkManager
بیش از یک بار در هر فرآیند اکنون منجر به یک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
را به طور مناسب به روز کنید. پیاده سازی مرجعListenableFuture
s در بستهFutures
درalpha02
ارائه شده است (به بخشWorkManager
زیر مراجعه کنید). -
Worker
ListenableWorker
را گسترش می دهد و همچنان مانند قبل با متد انتزاعیResult doWork()
عمل می کند. - برخی از روشها و اعضا را از
Worker
بهListenableWorker
تغییر داد. - ما به زودی پیاده سازی های مرجعی را برای
ListenableWorker
ارائه خواهیم داد که از کوروتین های Kotlin (پس از انتشار نسخه های پایدار) و RxJava2 استفاده می کنند.
-
- رابط
WorkerFactory
و اجرای بتنDefaultWorkerFactory
در یک کلاس انتزاعی به نامWorkerFactory
ادغام شدهاند. پیاده سازی تضمین می کند که رفتار مبتنی بر بازتاب پیش فرض به عنوان آخرین تلاش برای هر نمونهWorkerFactory
ایجاد شده توسط کاربر نامیده می شود. این یک تغییر شکسته است. -
WorkManager.synchronous()
وWorkContinuation.synchronous()
و تمام متدهای مرتبط را حذف کرد.ListenableFuture<Void>
به عنوان نوع برگشتی بسیاری از متدها در API اضافه شد. این یک تغییر API است.- اکنون می توانید با استفاده از
ListenableFuture
s به صورت همزمان دریافت و مشاهده کنید. به عنوان مثال،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
بالقوه در شرایط مسابقه که در آن کارREPLACE
d بود. b/116253486 و b/116677275 -
WorkContinuation.combine()
اکنون یک یا چندWorkContinuation
را به جای دو یا چند مورد می پذیرد. b/117266752
شکستن تغییرات API
- تمام متدها و کلاسهای
deprecated
قبلی، به ویژه سازنده پیشفرضWorker
حذف شد. - رابط
WorkerFactory
و اجرای بتنDefaultWorkerFactory
در یک کلاس انتزاعی به نامWorkerFactory
ادغام شدهاند. -
WorkManager.synchronous()
وWorkContinuation.synchronous()
حذف شد. - متدهای
WorkManager.getStatus*()
اکنونListenableFuture
s را برمی گرداند.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
اکنون میتوانند در روشهای انتزاعی کلاس مشروح شده با مقدار خودکار اعلام شوند. توجه داشته باشید که این حاشیهنویسیها برای درک درست آنها باید با@CopyAnnotations
for 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 اکنونNonNull
b/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 - هنگام استفاده از
WorkRequest
WorkRequest.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
تبدیل بهsetDemoControllerIndex
b/79995048 خواهد شد - به عنوان مثال
action_show_settings
تبدیل بهactionShowSettings
b/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:name
in 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()
برای اجازه دادن به سفارشی سازی جایی که نمایش داده شد - پشتیبانی
Observable
Rxjava2 اضافه شده است - اجرای 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
منتشر می شود.
رفع اشکال
اکنون در هنگام استفاده از اجرای مبتنی بر
AlarmManager
PeriodicWorkRequest
اکنون به درستی دوباره برنامه ریزی شده اند.پس از توقف نیرو یا راه اندازی مجدد ، یک 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 اکنون از نسخه
Room
1.1.1-rc1
استفاده می کند.
تغییرات API
اضافه شده
getStatusesSync()
، نسخه همزمانWorkContinuation.getStatuses()
.Worker
توانایی تمایز بین لغو کاربر و توقف موقت سیستم عامل را دارد. در صورت درخواست هر نوع توقفtrue
Worker.isStopped()
.Worker.isCancelled()
هنگامی که کار به صراحت لغو شده است ،true
است. b/79632247پشتیبانی از پارامترهای شغلی#GetNetwork () را در API 28 اضافه کنید. این از طریق
Worker.getNetwork()
در معرض دید قرار می گیرد.Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
اضافه شده است ، بنابراین می توانید چه تعداد شغل را می توان بهJobScheduler
یاAlarmManager
ارسال کرد. این امر به جلوگیری از گرفتن همه اسلات های موجودJobScheduler
WorkManager
کمک می کند.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
تغییرات رفتار
- یک برچسب ضمنی برای همه
WorkRequest
S ، که نام کلاس کاملاً واجد شرایط برایWorker
است ، اضافه کرد. این امکان را برای حذفWorkRequest
S بدونtag
S یا زمانی که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:rxjava2
Artifact اضافه می شود.
تغییرات API
API برای روشن شدن نقش مجریان در سازندگان تغییر می کند:
تغییر نام نامگذاری
setBackgroundThreadExecutor()
بهsetFetchExecutor()
(درPagedList.Builder
وLivePagedListBuilder
)تغییر نام نامگذاری
setMainThreadExecutor()
بهsetNotifyExecutor()
(درPagedList.Builder
).
ثابت
PagedList.mCallbacks
عضو خصوصی است.
رفع اشکال
LivePagedListBuilder
به جای اجزای قوس IO Thread Pool ، بار اولیهPagedList
بر روی مجری مشخص شده ایجاد می کند.رفتار نامعتبر ثابت در بسته بندی های
DataSource
داخلی (برای اجرایDataSource.map
و همچنین بارگیریPositionalDataSource
در محل کار با استفاده از محل کاربرد) B/77237534 استفاده می شود.
اتاق
رفع اشکال
رفع یک اشکال مهم در RX Single Rx
Single
وMaybe
پیاده سازی هایی که در آن می تواند پرس و جو را قبل از زمان بازیافت کند ، در صورت اضافه کردن بیش از 1 ناظر بهSingle
یاMaybe
Instancces ، باعث ایجاد مشکل می شود. 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 حذف شده اند ، از جمله بقایای
LivePagedListProvider
recyclerview.extensions
. -
DataSource.Factory
از یک رابط به یک کلاس انتزاعی تغییر می یابد تا عملکرد نقشه را فعال کند.
رفع اشکال
- سازندگان را تغییر داد تا نهایی شوند. b/70848565
- اجرای
DataSource
اتاق اکنون برای رسیدگی به نمایش داده های چند جدول ثابت است-این تعمیر در اتاق 1.1.0-beta1 موجود است ، به بالا مراجعه کنید. - رفع اشکال در جایی که
BoundaryCallback.onItemAtEndLoaded
در صورت فعال بودن مکان ها برایPositionalDataSource
مورد استفاده قرار نمی گیرد و اندازه کل چند اندازه دقیق از اندازه صفحه است.
2 مارس 2018
اتاق 1.1.0-alpha3
منتشر می شود. این آخرین نسخه برنامه ریزی شده آلفا برای اتاق 1.1.0
است.
تغییرات API
روشهای
addObserver
removeObserver
inalidationtracker اکنون همزمان همزمان هستند و باید در یک موضوع غیر UI فراخوانی شوند. این مانع از برخی شرایط مسابقه در هنگام مشاهده جداول می شود.یک روش جدید
clearAllTables()
در کلاس RoomDatabase وجود دارد که تمام محتوای جدول را کوتاه می کند. b/63807999SupportSQLiteQuery
اکنون یک روشgetArgCount()
دارد که تعداد پارامترهای پرس و جو را برمی گرداند. b/67038952
رفع اشکال
@RawQuery
اکنون به درستی برای پرس و جوهای صفحه بندی پشتیبانی می شود. b/72600425اتاق اکنون به درستی نام های
Dao
ایجاد شده است تا از درگیری نام خودداری کنید وقتی 2 یا بیشتر رابطDao
کلاس های داخلی در یک بسته مشابه هستند و دارای یک نام هستند. b/73536380انواع زمینه های عمومی در
Pojo
به عنوان عضو کلاس گسترده به درستی تجزیه می شوند. b/73534868پارامترهای پرس و جو در رابط های
Dao
که از مصنوعات وابستگی به ارث می برند ، اکنون به درستی تجزیه شده اند. b/68118746نمایش داده شدگان برای
@Relation
s اکنون به درستی از نام های میدان فرار می کنند. 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.Builder
DataSource
+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
هستند. در این نسخه نسخه جدیدی از صفحه بندی وجود ندارد.
رفع اشکال
چرخه عمر:
- وقتی
LiveDataReactiveStreams
LiveData
نیست ، اکنون به درستی از ناشر منبع ارتباط برقرار نمی کند. 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.1
module to use the newcommon-java8
artifact. This issue will be fixed inbeta2
.
- Due to a bug in
Packaging Changes
-
android.arch.persistence.room.db
has been moved toandroid.arch.persistence.db
-
android.arch.persistence.room.db-impl
has 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
-
transient
fields are now ignored by default unless they are annotated with@ColumnInfo
,@Embedded
or@Relation
. b/62600692 - Primary Keys must be annotated with
@NonNull
unless they are auto generated. b/64292391- This change may require a schema migration. با عرض پوزش برای ناراحتی.
- Added a new convenience annotation ( @Transaction ) which overrides a
DAO
method 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
@Query
methods 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
@Generated
if the app has the annotation in the classpath. b/35754819Fixed MediatorLiveData's observer comparison bug. b/64413274
SQLite
WITH
queries 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
onChanged
method. b/64285805
1.0.0 Alpha 8 - August 1, 2017
تغییرات رفتار
-
NOT NULL
constraint 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
removeObserver
method, 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
observer1
is added beforeobserver2
, it will receiveON_CREATE
and 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: ifobserver1
is added beforeobserver2
, thenON_CREATE
is sent first toobserver1
, then toobserver2
(same happens forON_START
andON_RESUME
), butON_PAUSE
event is sent first toobserver2
and only then toobserver1
(same forON_STOP
andON_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.Builder
to 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.Builder
to observe when a database is created or opened. b/62699324@Query now may return RxJava
Maybe
orSingle
. b/62231019
You need to depend on android.arch.persistence.room:rxjava2
artifact to add RxJava support to Room.
رفع اشکال
Fixed
@Delete
queries 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
,@Delete
and@Update
methods can now have parameters from different entity types. b/62682405
رفع اشکال
Fixed
byte[]
handling in@Dao
methods. 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
@OnLifecycleEvent
supports 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.LifecycleActivity
andLifecycleFragment
classes are moved into theandroid.arch.lifecycle:extensions
artifact.MigrationTestHelper receives the Instrumentation instance instead of the
Context
to be able to read the schema from the test assets and create the database in the application context.@Insert
,@Delete
and@Update
annotations in@DAO
methods can now haveIterable
as the parameter type. b/62259820
رفع اشکال
Overridden methods with lifecycle events are not called multiple times anymore.
Multiple
IN
parameters are now handled properly. b/62608681Abstract DAO classes can now have a constructor that receives the
@Database
instance. 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@Insert
queries.
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
Fragment
andActivityCompat
in the Support Library do not yet implementLifecycleOwner
interface. They will when Architecture Components reaches 1.0.0 version.