Architecture Components Release Notes Archive

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 اکنون از انواع بازگشت Rx Completable ، 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 منتشر شد.

ویژگی های جدید

تغییرات 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) اضافه شده است ، که می تواند فعل کارگرم را کنترل کند. به طور پیش فرض ، WorkManager Log.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/79996760

  • Worker.getRunAttemptCount() تعداد فعلی را برای یک Worker معین باز می گرداند. b/79716516

  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) به شما امکان می دهد تا یک PeriodicWorkRequest منحصر به فرد را انتخاب کنید. b/79600647

  • WorkManager.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/79443878

  • Data.Builder.putAll() اکنون نمونه ای از Builder را برمی گرداند. b/79699162

  • Javadoc بیشتر و در مستندات اصلاح می شود. b/79691663

تغییرات API

  • Worker می تواند نسبت به متوقف شدن واکنش نشان دهد. Worker.isStopped() می تواند برای بررسی اینکه آیا یک Worker متوقف شده است استفاده شود. Worker.onStopped() می تواند برای انجام عملیات پاکسازی سبک استفاده شود.

  • Worker.getTags() API Set ای از برچسب های مرتبط با 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/63807999

  • SupportSQLiteQuery اکنون یک روش 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 .

رفع اشکال

نامزد انتشار - 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 عمومی در نظر گرفته نشده بود).
  • چرخه عمر:

    • 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

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 on android.arch.lifecycle:common:1.0.1 module to use the new common-java8 artifact. This issue will be fixed in beta2 .

Packaging Changes

  • android.arch.persistence.room.db has been moved to android.arch.persistence.db
  • android.arch.persistence.room.db-impl has been moved and renamed to android.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:

  • Paging:

    • Improved Paging documentation with more examples and thread annotations.

رفع اشکال

  • Room:
    • Kotlin multi-line strings in @Query methods are handled properly. b/65809374
  • 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

رفع اشکال

  • Generated classes are now annotated with @Generated if the app has the annotation in the classpath. b/35754819

  • Fixed MediatorLiveData's observer comparison bug. b/64413274

  • SQLite WITH queries are now supported with [LiveData]. [ref-LiveData] b/62510164

  • Fixed 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

رفع اشکال

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 the fallbackToDestructiveMigration() method in the builder. b/62007004

تغییرات API

1.0.0 Alpha 7 - July 26, 2017

رفع اشکال

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 before observer2 , it will receive ON_CREATE and all other events before observer2 . This is no longer true for destruction events, for them observers are called in the reverse order of addition. So current behavior is: if observer1 is added before observer2 , then ON_CREATE is sent first to observer1 , then to observer2 (same happens for ON_START and ON_RESUME ), but ON_PAUSE event is sent first to observer2 and only then to observer1 (same for ON_STOP and ON_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 to RoomDatabase.Builder to clear the database if migration is missing. b/63872392

  • Architecture components now depend on support library 26.0.0

رفع اشکال

1.0.0 Alpha 5 - July 18, 2017

تغییرات API

You need to depend on android.arch.persistence.room:rxjava2 artifact to add RxJava support to Room.

رفع اشکال

  • Fixed @Delete queries without any parameters. b/63608092

  • Fixed 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/62460045

  • Migration 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 type Event (first parameter is the LifecycleOwner ). See Lifecycle docs for details.

  • LifecycleActivity and LifecycleFragment classes are moved into the android.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 have Iterable 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/62608681

  • Abstract DAO classes can now have a constructor that receives the @Database instance. b/38488747

  • DAO 's can now have a super class/interface with type parameters. b/62103620

1.0.0 Alpha 2 - June 2, 2017

تغییرات API

رفع اشکال

  • 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