15 בינואר 2019
מנהל עבודה
WorkManager 1.0.0-beta02 יצא משימוש. הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- תוקן תרחיש קצה שבו עבודה תקופתית יכולה לפעול יותר מפעם אחת בכל מרווח במכשירים עם Android 6.0 (רמת API 23). b/121998363
- בוצע תיקון
ConcurrentModificationExceptionבמכשירים שפועלת בהם גרסת Android 5.1 (API רמה 22) ומטה. b/121345393 - תיקון ביצוע שגוי של עבודה כשאין עמידה במגבלות על מכשירים שפועלת בהם מערכת Android מגרסה 5.1 (רמת API 22) ומטה. b/122578012
- במקרי קצה, טיפול אופטימלי בהשלמת העבודה כדי לזרז את הטיפול. b/122358129
- נוסף שינוי כדי לטפל במרוץ תהליכים אפשרי בין מספר מופעים
מתוך
LiveDataשמשמשים את WorkManager. - הועבר לשימוש בתלות של
Room1.1.1במקום ב-1.1.1-rc01; האלה הגרסאות זהות. b/122578011
19 בדצמבר 2018
מנהל עבודה
WorkManager 1.0.0-beta01 יצא משימוש. הגרסה הזו לא מכילה שינויים ב-API. בהמשך, פלטפורמת WorkManager צפויה לשמור על יציבות API עד לגרסה הבאה, אלא אם תהיה בעיה קריטית. הגרסה הזו כוללת כמה תיקוני באגים.
תיקוני באגים
- צאצאים של עבודות הורים שבוטלו בעבר ואושרו, לא יפעלו יותר. b/120811767
- סוגי רישום ביומן שאותחלו בצורה נכונה (מופיעים בעיקר במהלך בדיקות).
18 בדצמבר 2018
ניווט
הניווט 1.0.0-alpha09 שוחרר. הגרסה הזו כוללת שינויים שעלולים לגרום לכשל ב-API.
יש לעיין בקטע שינויי תוכנה שעלולים לגרום לכשלים שבהמשך.
בחרנו שלא להמשיך בפיתוח של
פריט מידע שנוצר בתהליך הפיתוח (Artifact) מסוג android.arch.navigation:navigation-testing. אומנם זה הוכיח את עצמו
מועיל לבדיקה פנימית של NavController, מומלץ מאוד
אסטרטגיות בדיקה חלופיות, כמו לעג למכונה NavController
כדי לוודא שמתבצעות שיחות navigate() הנכונות. הזה
והגישה הזו מתוארת בפירוט
שיחת פעילות אחת ב-AndroidDevSummit 2018
ואנחנו נעבוד על תיעוד נוסף במיוחד לגבי בדיקות
עם ניווט.
תכונות חדשות
- תמונות של
MenuItemעםmenuCategory="secondary"לא יוקפצו יותר מאחור סטאק כשמשתמשים בו עםNavigationUImethods. b/120104424 - עכשיו אפשר להגדיר חלופה ב-
AppBarConfigurationOnNavigateUpListenerמופע שייקרא כאשרnavController.navigateUp()יחזורfalse. b/79993862 b/120690961
שינויי תוכנה שעלולים לגרום לכשלים
- כשמשתמשים ב
<argument>עםargType="reference", הניווט הופסק מנתחת את ההפניה, במקום זאת מספקת את מזהה המשאב הגולמי עצמו. b/111736515 onNavDestinationSelected()עכשיו חוזר ליעד ההתחלה של תרשים הניווט כברירת מחדל, כך שיהיו תואמים ל-methodssetup. הוסףmenuCategory="secondary"ל-MenuItemכדי לא להקפיץ את הערימה האחורית. aosp/852869- ל-methods
fromBundle()של כיתותArgsשנוצרו אין עכשיו ערך nullBundleבמקוםBundleעם ערך null 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ברמה העליונה של Kotlin. זהו שינוי תוכנה שעלול לגרום לכשלים ב-API. b/120564418
הפרות שינויים ב-API
androidx.work.Resultהועבר להיות בכיתה פנימית שלListenableWorker.
6 בדצמבר 2018
חלוקה לדפים
החלוקה לדפים של 2.1.0-rc01 תתפרסם ללא שינויים החל מ-2.1.0-beta01.
ניווט
הניווט 1.0.0-alpha08 שוחרר. הגרסה הזו כוללת שינויים שעלולים לגרום לכשל ב-API.
יש לעיין בקטע שינויי תוכנה שעלולים לגרום לכשלים שבהמשך.
תכונות חדשות
- תוויות של יעדים, כשמשתמשים בהן עם
NavigationUIשיטות, יופעלו מעכשיו באופן אוטומטי צריך להחליף{argName}מופעים בandroid:labelבארגומנט הנכון b/80267266 - הניווט תלוי עכשיו בספריית התמיכה בגרסה 28.0.0 b/120293333
שינויי תוכנה שעלולים לגרום לכשלים
- השם של
OnNavigatedListenerהשתנה ל-OnDestinationChangedListenerb/118670572 - עכשיו
OnDestinationChangedListenerמעביר גם אתBundleהארגומנטים aosp/837142 - המאפיינים
app:clearTaskו-app:launchDocumentוהמאפיינים שלהם שיטות הוסרו. משתמשים ב-app:popUpToעם השורש של התרשים כדי להסיר את כל היעדים מהמקבץ האחורי. b/119628354 ActivityNavigator.Extrasמשתמש עכשיו בדפוסBuilderומוסיף את היכולת הגדרת דגליIntent.FLAG_ACTIVITY_aosp/828140- השם של
NavController.onHandleDeepLinkהשתנה ל-handleDeepLinkaosp/836063 - הרבה מחלקות ושיטות שלא מיועדות למחלקות משניות, כמו
NavOptions,NavInflater,NavDeepLinkBuilderוגםAppBarConfiguration, להפוך ל-finalaosp/835681 - השיטה
NavHostFragment.setGraph()שהוצאה משימוש הוסרה aosp/835684 - ה-method
NavigationUI.navigateUp(DrawerLayout, NavController)שהוצאה משימוש הוסר. aosp/835684 - יצירת המקטעים הועברה אל
FragmentNavigator, כדי להקל על להעניק גישה ליצירת מקטעים לFragmentFactory. b/119054429 - ה-constructor של
NavGraphNavigatorכבר לא לוקחContextaosp/835340 - NavigatorProvider זמין עכשיו
מחלקה ולא ממשק. הערך של '
NavigatorProvider' הוחזר על ידיgetNavigatorProvider()לא שינה את הפונקציונליות שלו. aosp/830660 NavDestination.navigate()הוסר. התקשרות אלnavigate()בNavigatorבמקום זאת. aosp/830663- ארגון מחדש משמעותי של
Navigator, ללא צורך בOnNavigatorNavigatedListenerובמקום זאת הפונקציהnavigateתחזיר אתNavDestinationשהניווט אליה. Navigatorמכונות כבר לא יכולות לשלוח אירועי פופ אלNavController. נקודות שכדאי להעלות באמצעותOnBackPressedCallbackכדי ליירט לחיצות על הלחצן 'הקודם' והתקשר אלnavController.popBackStack(). aosp/833716
תיקוני באגים
popUpToפועל עכשיו באופן עקבי כשהיעד הוא רכיב<navigation>b/116831650- תוקנו מספר באגים שגרמו ל-
IllegalArgumentExceptionכשמשתמשים בתרשימים בתצוגת עץ b/118713731 b/113611083 b/113346925 b/113305559 - המאפיין
dataPatternשל<activity>יעדים יאוכלס עכשיו ארגומנטים מארגומנטים שאינם מחרוזות באמצעות הפעלתtoString()b/120161365
ארגומנטים בטוחים
- Safe Args תומך באובייקטים שניתנים לשינוי טורי, כולל ערכי Enum. סוגי טיפוסים בני מנייה (enum)
יכולים להגדיר ערך ברירת מחדל באמצעות שימוש בליטרל 'טיפוסים בני מנייה (enum)' ללא שם המחלקה.
(למשל,
app:defaultValue="READ") b/111316353 - Safe Args תומך במערכים מכל הסוגים הנתמכים b/111487504
- מעכשיו, Safeargs מתעלם מתיקיות משנה של ספריות משאבים b/117893516
- Safe Args מוסיף הערות
@Overrideבמקרים הרלוונטיים b/117145301
5 בדצמבר 2018
מנהל עבודה
WorkManager 1.0.0-alpha12 יצא משימוש. הגרסה הזו כוללת מספר שינויים שעלולים לגרום לכשל ב-API. יש לעיין בקטע Breaking API Changes (שינויים ב-API) שבהמשך. סביר להניח שהגרסה הזו תושק כגרסת הבטא הראשונה שלנו. alpha12 כולל גם עדכוני מסמכים מקיפים.
שינויים ב-API
- פריט מידע שנוצר בתהליך פיתוח (Artifact) חדש,
work-rxjava2, מציג אתRxWorker. זהו ערך מסוגListenableWorkerשמצפה לSingle<Payload>. - התמיכה ב-Firebase JobDispatcher הוסרה כי בקרוב היא תוצא משימוש. פירוש הדבר הוא שהארטיפקט של
work-firebaseלא יתעדכן יותר כשנכנס לגרסת הבטא. אנחנו נבדוק אפשרות להוסיף חלופה בעתיד. - שילבת את
PayloadאלResult.Resultהוא עכשיו "כיתה חתומה" עם שלוש הטמעות קונקרטיות, שאפשר לקבל דרךResult.success()(אוResult.success(Data)),Result.failure()(אוResult.failure(Data)) ו-Result.retry(). התוצאות שלListenableFutureשלך עכשיו הןResultבמקוםPayload. לפונקציותWorkerאין שיטות getter ו-setter לפלטData. זהו שינוי תוכנה שעלול לגרום לכשלים. - נוספו וריאנטים של
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)ו-Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)כדי לתמוך טוב יותר במזהי URI של תוכן עם טריגרים איטיים. b/119919774 - נוסף וריאנט אחד (
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)). ל-method הזה נדרש API 26. - נוספו שיטות תוסף
Operation.await()ו-ListenableFuture.await()של Kotlin. - השם של
Operation.getException()השתנה. השם החדש הואOperation.getThrowable(). זהו שינוי תוכנה שעלול לגרום לכשלים. - המחלקה והשיטות של
ContentUriTriggersשמפנים אליה כבר לא זמינות לשימוש באופן ציבורי. זהו שינוי תוכנה שעלול לגרום לכשלים. - הסרנו את שאר שיטות ה-Varargs ב-
WorkManager, ב-WorkContinuationוב-OneTimeWorkRequestכדי לייעל את ה-API. כדי לפתור בעיות ב-build, אפשר לכלול את הוריאנטים הקיימים באמצעותArrays.asList(...). אנחנו עדיין כוללים גרסאות של ארגומנט יחיד בכל שיטה. זהו שינוי תוכנה שעלול לגרום לכשלים. - הוסרו
WorkContinuation.combine(OneTimeWorkRequest, *)וריאנטים. הם הציגו API מבלבל; השיטות הקיימות שלcombineברורות יותר. זהו שינוי תוכנה שעלול לגרום לכשלים.
תיקוני באגים
- הטמעות טרום-Marshmallow אמינות עכשיו יותר בהתאוששות מתהליך מוות של משימה שכבר בוצעה.
- המעקב אחר
LiveDataכפי שנמדד דרךobserveForeverמתבצע דרך WorkManager. זהו גרסה קודמת של תיקון בספריית החדרים. b/74477406 - הפונקציה
Data.Builder.build()גורמת עכשיו לחריגה אם האובייקט שעבר סריאליזציה חורג מהגודל המקסימלי שלו. זה היה קורה רק בשרשור ברקע שבו לא הייתה אפשרות לטפל כראוי. - הבחנה נוספת: עבודה שנעצרה לעומת עבודה שבוטלה; הפונקציה
getWorkInfoById()תחזירWorkInfoעם הערךCANCELLEDStateבמהלךListenableWorker.onStopped(). - יש להתייחס ל-
nullResultככשלים ב-ListenableWorker. b/120362353 - תיקון ספקולטיבי לטאבלטים של Shield שמריצים את API 24 ולפעמים גרם להם
IllegalArgumentException. b/119484416
הפרות שינויים ב-API
- התמיכה ב-Firebase JobDispatcher הוסרה כי בקרוב היא תוצא משימוש. פירוש הדבר הוא שהארטיפקט של
work-firebaseלא יתעדכן יותר כשנכנס לגרסת הבטא. אנחנו נבדוק אפשרות להוסיף חלופה בעתיד. - שילבת את
PayloadאלResult.Resultהוא עכשיו "כיתה חתומה" עם שלוש הטמעות קונקרטיות, שאפשר לקבל דרךResult.success()(אוResult.success(Data)),Result.failure()(אוResult.failure(Data)) ו-Result.retry(). התוצאות שלListenableFutureשלך עכשיו הןResultבמקוםPayload. לפונקציותWorkerאין שיטות getter ו-setter לפלטData. - נוספו שיטות תוסף
Operation.await()ו-ListenableFuture.await()של Kotlin. - השם של
Operation.getException()השתנה. השם החדש הואOperation.getThrowable(). - המחלקה והשיטות של
ContentUriTriggersשמפנים אליה כבר לא זמינות לשימוש באופן ציבורי. - הסרנו את שאר שיטות ה-Varargs ב-
WorkManager, ב-WorkContinuationוב-OneTimeWorkRequestכדי לייעל את ה-API. כדי לפתור בעיות ב-build, אפשר לכלול את הוריאנטים הקיימים באמצעותArrays.asList(...). אנחנו עדיין כוללים גרסאות של ארגומנט יחיד בכל שיטה. - הוסרו
WorkContinuation.combine(OneTimeWorkRequest, *)וריאנטים. הם הציגו API מבלבל; השיטות הקיימות שלcombineברורות יותר.
4 בדצמבר 2018
חדר
החדר 2.1.0-alpha03 הושק עם תמיכה בקורוטינים ומספר תיקוני באגים.
שינויים ב-API
- ה-FTS
tokenizerב-@Fts3/@Fts4מקבל עכשיו מחרוזת במקום Enum. כך אפשר להשתמש בכלי ההמרה לאסימונים בהתאמה אישית ב'חדר'. כלים מובנים לאסימונים עדיין מוגדרים ב-FtsOptionsכקבועים של מחרוזות. b/119234881
תכונות חדשות
- קורסים: שיטות DAO יכולות עכשיו להיות פונקציות השעיה. כדי לתמוך בפונקציות השעיה בחדר, הושק ארטיפקט חדש:
room-coroutines. b/69474692 - שיטות DAO עם הערות
@Insert,@Deleteאו@Updateתומכות עכשיו ב-ListenableFutureכסוג החזרה. b/119418331
תיקוני באגים
- תוקן באג שגרם ל'חדר' מנסה למצוא באופן שגוי בנאי עם עמודות בנכס
ignoredColumnsשל@Entity. b/119830714 - תוקן באג שגרם לכך שפרמטרים של שיטת DAO לא סימנו פרמטרים של שיטת DAO כפרמטרים סופיים בהטמעה שנוצרה. b/118015483
- תוקן באג שגרם לקריסה של המעבד של החדר כשמדווח על שגיאה בשאילתה עם סמלים מיוחדים. b/119520136
- תוקן באג שגרם לדחייה של הטמעות שונות של
Collectionכארגומנטים של ביטויINב-חדר. b/119884035 - תוקן באג שגרם לכך שהנתונים ב-LiveData שהוחזרו מ'חדר' ייאספו תמיד של האשפה כשהם יזוהו לתמיד, וכתוצאה מכך לא ייקלטו יותר נתונים חדשים. b/74477406
- הנעילה הקרובה של
RoomDatabaseעודכנה כדי לצמצם את התחרות על הנעילה. b/117900450
8 בנובמבר 2018
מנהל עבודה
WorkManager 1.0.0-alpha11 יצא משימוש. הגרסה הזו כוללת שינויים רבים שיהפכו ל-API יציב ב-beta.
בגרסה הזו יש שינויי API שעלולים לגרום לכשל. יש לעיין בקטע Breaking API Changes (שינויים ב-API) שבהמשך.
שינויים ב-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(). זהו שינוי תוכנה שעלול לגרום לכשלים. - ה-constructor של
WorkStatusכבר לא חלק מה-API הציבורי. זהו שינוי תוכנה שעלול לגרום לכשלים. - השמות של
Configuration.getMaxJobSchedulerID()ושלConfiguration.getMinJobSchedulerID()השתנו ל-Configuration.getMinJobSchedulerId()ו-Configuration.getMaxJobSchedulerId()בהתאמה. זהו שינוי תוכנה שעלול לגרום לכשלים. - נוספו הרבה הערות
@NonNullל-API הציבורי כדי לשפר את הארכיטקטורה של ה-API. - צריך להוסיף את API של
WorkManager.enqueueUniqueWork()כדי להוסיף לחשבוןOneTimeWorkRequestייחודיים בלי ליצורWorkContinuation. - כל הווריאציות של שיטות
enqueueו-cancelב-WorkManagerמחזירות עכשיו סוג חדש שלOperation. זהו שינוי תוכנה שעלול לגרום לכשלים. - כל הווריאציות של
enqueueלא יכולות יותר לקבל וריאציות שלWorkRequest. זהו שינוי תוכנה שעלול לגרום לכשלים. במקום זאת, אפשר להשתמש באוספים. אפשר להשתמש ב-Arrays.asList()כדי לשנות קוד קיים. עשינו את זה כדי לצמצם את מספר הפלטפורמות של ה-API ואת מספר ה-methods. - ניסיון
initializeWorkManagerיותר מפעם אחת בכל תהליך יוביל מעכשיו ל-IllegalStateException. זהו שינוי תוכנה שעלול לגרום לכשלים.
תיקוני באגים
WorkRequest.Builderבארטיפקט שלwork-runtime-ktxמשתמשים עכשיו ב-ListenableWorker. תיקונים 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(). - ה-constructor של
WorkStatusכבר לא חלק מה-API הציבורי. - השמות של
Configuration.getMaxJobSchedulerID()ושלConfiguration.getMinJobSchedulerID()השתנו ל-Configuration.getMinJobSchedulerId()ו-Configuration.getMaxJobSchedulerId()בהתאמה. - כל הווריאציות של שיטות
enqueueו-cancelב-WorkManagerמחזירות עכשיו סוג חדש שלOperation. - כל הווריאציות של
enqueueלא יכולות יותר לקבל וריאציות שלWorkRequest. - ניסיון
initializeWorkManagerיותר מפעם אחת בכל תהליך יוביל מעכשיו ל-IllegalStateException.
1 בנובמבר 2018
חלוקה לדפים
החלוקה לדפים של 2.1.0-beta01 תתפרסם ללא שינויים החל מ-2.1.0-alpha01.
30 באוקטובר 2018
חדר
החדר 2.1.0-alpha02 הושק עם כמה תיקוני באגים ופיצ'ר חדש.
תכונות חדשות
- נוספה תמיכה בהפניה אל
@DatabaseViewב-@Relation. b/117680932
תיקוני באגים
- תוקן באג שגרם לקלט/פלט של דיסק ב-thread הראשי במהלך הרשמה והשלכה מסוג החזרה של Rx. b/117201279
- תוקן באג שגרם ל'חדר' לא מצא ממיר מסוג מתאים לשדה במחלקה של ישות Kotlin. b/111404868
- תוקן באג שגרם ל- Room ליצור קוד שגוי להטמעה של ממשק
DAOשמכילה שיטת ברירת מחדל של Kotlin ללא ארגומנטים. b/117527454 - עדכנו את כלי הניתוח לדקדוק SQLite של Room, ותיקנתי בעיה בביצועים שגרמה לזמני פיתוח ארוכים. b/117401230
29 באוקטובר 2018
ניווט
גרסת הניווט 1.0.0-alpha07 הושקה עם תיקוני באגים ושינויים ב-API.
תכונות חדשות
- הגדרה חדשה של AppBarConfiguration הכיתה מאפשרת לך להתאים אישית את היעדים שנחשבים ברמה העליונה יעדים. אפשר לעיין במסמכים המעודכנים לקבלת פרטים. b/117333663
- עכשיו אפשר להעביר ארגומנטים ליעד ההתחלה של התרשים b/110300470
- עכשיו אפשר להשתמש בקישורי עומק בסכימות בהתאמה אישית עם נקודות, מקפים וסימני פלוס. b/112806402
שינויי תוכנה שעלולים לגרום לכשלים
- המודול
navigation-testing-ktxמקופל לתוךnavigation-testing artifactוכבר לא יפורסמו. - פריט המידע שנוצר בתהליך הפיתוח (Artifact) מסוג
navigation-testingתלוי בתקן Kotlin לספרייה. ה-API השתנה כדי שיתאים יותר ל-Kotlin אבל אתה יכול להמשיך להשתמש בו בבדיקות שנכתבו ב-Java. - אין יותר תמיכה בתרשימי ניווט שרשומים במניפסט המטא-נתונים. b/118355937
- לא ניתן יותר לצרף פעולות אל <activity> יעדים. aosp/785539
תיקוני באגים
- עכשיו קישורי עומק מנתחים פרמטרים של שאילתה בצורה תקינה. b/110057514
- יעדי הפעילות מחילים עכשיו את כל האנימציות בכניסה וביציאה. b/117145284
- תוקנה קריסה שמתרחשת לאחר שינויים בהגדרות אישיות במהלך שימוש בהתאמה אישית מכשירי ניווט b/110763345
ארגומנטים בטוחים
- לארגומנטים בטוחים יש עכשיו תלות קבועה בפלאגין Android Gradle 3.2.1. b/113167627
- עכשיו אפשר ליצור מסלולים לכיתות פנימיות. b/117407555
- תוקנה בעיה ביצירת מסלול אל <include> גרפי. b/116542123
12 באוקטובר 2018
חלוקה לדפים
החלוקה לדפים של 2.1.0-alpha01 מופצת עם שתי תוספות עיקריות – שחרור דפים וספריות של תוספים של KTX לכל פריט מידע שנוצר בתהליך הפיתוח (Artifact) – וכן עם מספר שינויים נוספים בממשק ה-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()וריאנטים שיוצרים קריאה חוזרת (callback) נוספת שמופעלת אם בזמן שרשימת הדפים מוצגת, לאחר הבחנה. כך ניתן לסנכרן החלפת PagedList עם עדכונים אחרים בממשק המשתמש. b/73781068 - הוספנו את
PagedList.getLoadedCount()כדי לאפשר לך לדעת כמה פריטים יש בזיכרון. חשוב לשים לב שהערך המוחזר תמיד שווה ל-.size()אם ה-placeholders מושבתים.
תיקוני באגים
- תוקן מרוץ תהליכים בזמן שוני אם נעשה שימוש חוזר ברשימות b/111591017
- עכשיו
PagedList.loadAround()יקפיץ/הIndexOutOfBoundsExceptionכשהאינדקס לא חוקי. בעבר הוא היה יכול לקרוס עם חריגה לא ברורה אחרת. - תוקן מקרה שבו גודל טעינה ראשוני קטן במיוחד יחד עם נתונים שלא השתנו יובילו לטעינה נוספת של b/113122599
11 באוקטובר 2018
מנהל עבודה
גרסת WorkManager 1.0.0-alpha10 זמינה והיא תומכת בעבודה אסינכרונית בשליטת המפתח. בגרסה הזו יש שינויי API שעלולים לגרום לכשל. יש לעיין בקטע Breaking API Changes (שינויים ב-API) שבהמשך.
אנחנו צופים ש-WorkManager נכנס לשלבים האחרונים של תקופת האלפא. ה-API צפוי להיות יציב בגרסת הבטא, כך שכדאי להקדיש זמן כדי לשלוח משוב על הכלי שלנו למעקב אחר בעיות.
שינויים ב-API
- הסרת כל ה-methods והמחלקות
deprecated, ובמיוחד את ה-constructor של ברירת המחדלWorker. זהו שינוי תוכנה שעלול לגרום לכשל ב-API. - השם
NonBlockingWorkerשונה. השם החדש הואListenableWorker, והוא עכשיו מחלקה ציבורית לא מוסתרת ומוכן לשימוש.- הפונקציה
ListenableWorkerנותנת גישה לשיטה מופשטת אחת,ListenableFuture<Payload> onStartWork(), שנקראת בשרשור הראשי. באחריותך להתחיל ולעבד את העבודה באופן אסינכרוני. בסיום, צריך לעדכן אתListenableFutureבהתאם. הטמעות של קובצי עזר שלListenableFutureסופקו בחבילת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. לדוגמה, הפונקציה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. - נוספו הגדרות מוגנים כדי לשמור את ה-constructor החדש של
Worker. b/116296569 - תיקון
NullPointerExceptionפוטנציאלי במרוץ תהליכים שבו העבודה בוצעהREPLACEימים. b/116253486 ו-b/116677275 WorkContinuation.combine()יכול עכשיו לקבל כרטיסWorkContinuationאחד או יותר במקום שניים או יותר. b/117266752
הפרות שינויים ב-API
- הסרת כל ה-methods והמחלקות
deprecated, ובמיוחד את ה-constructor של ברירת המחדלWorker. - הממשק
WorkerFactoryוההטמעה הבטוןDefaultWorkerFactoryמוזגו למחלקה מופשטת שנקראתWorkerFactory. - בוצעה הסרה של
WorkManager.synchronous()ושלWorkContinuation.synchronous(). - באמצעות
WorkManager.getStatus*()methods מוחזרותListenableFuture.WorkManager.getStatus*LiveData()מחזירהLiveDataשנ'.
חוזים עתידיים
המהדורות העתידיות 1.0.0-alpha02 יושקו.
שינויים ב-API
- מפתחים יכולים עכשיו להשתמש ב-
ResolvableFutureוב-AbstractResolvableFutureכהטמעות קונקרטיות בקלות שלListenableFuture.
8 באוקטובר 2018
חדר
החדר 2.1.0-alpha01 שוחרר.
תכונות חדשות
- FTS: החדר תומך עכשיו בישויות עם טבלת FTS3 או FTS4 של מיפוי. עכשיו אפשר להוסיף הערות לכיתות עם
@Entityבאמצעות@Fts3או@Fts4, כדי להצהיר על כיתה עם טבלת חיפוש של טקסט מלא במיפוי. יש אפשרויות של FTS להתאמה אישית נוספת דרך השיטות של ההערה. b/62356416 - Views: עכשיו אפשר להצהיר על כיתה כשאילתה שמורה ב- Room, שנקראת גם View (תצוגה מפורטת) באמצעות ההערה @DatabaseView. b/67033276
- Auto Value: התכונה Room תומכת עכשיו בהצהרה על מחלקות עם הערות AutoValue כישויות ו-POJO. עכשיו אפשר להצהיר על הערות החדר
@PrimaryKey,@ColumnInfo,@Embeddedו-@Relationבשיטות מופשטות של סיווג אוטומטי עם הערות. חשוב לשים לב שכדי להבין כראוי את ההערה בחדר, יש לצרף גם את ההערה@CopyAnnotations. b/62408420 - תמיכה בסוגי החזרה נוספים של Rx: שיטות DAO עם הערות ב-
@Insert, ב-@Deleteאו ב-@Updateתומכות עכשיו בסוגי החזרה של RxCompletable,Single<T>ו-Maybe<T>. b/63317956 - סוגים שאינם ניתנים לשינוי עם
@Relation: בעבר היה צורך ב-@Relationשדות עם הערות כדי להגדיר חדר, אבל עכשיו הם יכולים להיות פרמטרים של constructor. enableMultiInstanceInvalidation: זהו API חדש ב-RoomDatabase.Builderשמאפשר ביטול תוקף במספר מופעים של RoomDatabase באמצעות אותו קובץ מסד נתונים. המנגנון לביטול תוקף של כמה מכונות פועל גם במספר תהליכים. b/62334005fallbackToDestructiveMigrationOnDowngrade: הוא API חדש ב-RoomDatabase.Builderשבעזרתו ניתן ליצור מחדש את מסד הנתונים באופן אוטומטי במקרה של שדרוג לאחור. b/110416954ignoredColumns: מדובר ב-API חדש בהערה@Entityשאפשר להשתמש בו כדי להציג את רשימת השדות שהמערכת מתעלמת מהם לפי השם. המאפיין הזה שימושי להתעלמות משדות שעברו בירושה בישות. b/63522075
שינויים ב-API או בהתנהגות
- השמות של
mCallbackו-mDatabaseבRoomDatabaseהם עכשיו@Deprecated, והם יוסרו בגרסה הראשית הבאה של 'חדר'. b/76109329
תיקוני באגים
- תוקנו שתי בעיות שבהן חדר לא התאושש כמו שצריך ממסד נתונים פגום או מהעברה לא טובה במהלך האתחול. b/111504749 ו-b/111519144
- מעכשיו, Room ישתמש בצורה תקינה ב-constructor הראשי של Kotlin במחלקות נתונים, ולא יהיה צורך להצהיר על השדות כ-
vars. b/105769985
1 באוקטובר 2018
החדר 2.0.0 שוחרר ללא שינויים החל מ-2.0.0-rc01.
הפינגים של 2.0.0 מתפרסמים עם תיקון באג אחד.
חלוקה לדפים
תיקוני באגים
- תוקנה קריסה שעשויה להתרחש במהלך גלילה מהירה מאוד באמצעות
PositionalDataSourceו-placeholders b/114635383.
21 בספטמבר 2018
מחזור החיים 2.0.0 פורסם עם תיקון באג אחד מ-2.0.0-rc01 ב-ViewModel.
מחזור חיים
תיקוני באגים
- תוקן כלל ProGuard של ViewModel שהסיר באופן שגוי בנאים b/112230489
20 בספטמבר 2018
ניווט
גרסת הניווט 1.0.0-alpha06 הושקה עם תיקוני באגים ושינויים ב-API.
תכונות חדשות
- יש עכשיו תמיכה במעברים משותפים של רכיבים ליעדי מקטעים ופעילות. b/79665225. למידע נוסף, ראו הטמעת ניווט עם הרכיב של ארכיטקטורת הניווט
- בחירת פריט ב-
NavigationViewתסגור עכשיו את כל הגיליון התחתון שמכיל את הגיליון b/112158843
שינויים ב-API
- שינוי תוכנה זדונית: שיטת Navigator
navigate()מקבלת עכשיו פרמטרNavigator.Extras. - ה-method
getGraph()של NavController היא עכשיוNonNullb/112243286
תיקוני באגים
NavigationUI.setupWithNavController()כבר לא ידלפת צפיות אם נעשה בהן שימוש עם צפיות מיעדים ספציפיים b/111961977- מכשיר הניווט
onSaveState()מופעל עכשיו רק פעם אחת b/112627079
ארגומנטים בטוחים
- מעכשיו, המחלקה של אפליקציית 'מסלול' של ההורה שלה תרחיב עכשיו את המחלקה במסלול ליעד ניווט, אם היא קיימת b/79871405
- למסלולים ולמחלקות Args יש עכשיו הטמעה שימושית של
toString()b/111843389
19 בספטמבר 2018
מנהל עבודה
הגרסה של WorkManager 1.0.0-alpha09 כוללת תיקוני באגים, עדכוני תשתית ושינויים ב-API.
בעיה ידועה
אם נתקלתם בבעיה הבאה: "נמצא יותר מקובץ אחד עם הנתיב הבלתי תלוי של מערכת ההפעלה 'meta-INF/proGuard/androidx-annotations.pro'",
מגניב
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
תיקוני באגים
- נוסף תיקון נוסף שהיה נדרש עבור '100 משימות' שגיאה. b/115560696
- נוספו כמה תיקונים לשגיאות באילוצים של מפתחות זרים עקב מרוץ תהליכים. b/114705286
- הוענקה גישה של
ConstraintTrackingWorker.onStopped(boolean)קריאות ל-Workerהבסיסי. b/114125093 - אכיפה נכונה של השהיה מינימלית לפני ניסיון חוזר (backoff) ב-Firebase JobDispatcher. b/113304626
- שיפור באיכות השרשורים מבטיח בתוך הספרייה.
- תיקון בעיה פוטנציאלית בביטול כפילויות של
LiveDataבאופן פנימי.
שינויים ב-API
- עכשיו אפשר ליצור מכונות
Workerמשלכם בזמן ריצה על ידי ציון השדהWorkerFactoryכחלק מהשדהWorkManager.Configuration. היצרן החלופי הואDefaultWorkerFactory, שתואם להתנהגות של הגרסאות הקודמות של WorkManager.- הבנאים שמוגדרים כברירת מחדל עבור
Workerו-NonBlockingWorkerמסומנים עכשיו כהוצאה משימוש. עליך להשתמש ב-constructor החדש (Worker(Context, WorkerParameters)) ולקרוא ל-super(Context, WorkerParameters); הגרסאות העתידיות של WorkManager יסירו את בנאי ברירת המחדל.
- הבנאים שמוגדרים כברירת מחדל עבור
- התחלנו להשתמש בארטיפקט
ListenableFutureהחדש באופן פנימי (ללא יחסי תלות של Guava). בגרסאות הבאות נציג את ListenableFutures ל-API. השינוי הזה יתמוך בביטול ההסתרה שלNonBlockingWorkerבסופו של דבר. - הוספת יכולת להפעיל עבודה מתוזמנת ב-
TestDriverדרךTestDriver.setInitialDelayMet(UUID)ו-TestDriver.setPeriodDelayMet(UUID). b/113360060
שינויי תוכנה שעלולים לגרום לכשלים
- הבנאים
Workerו-NonBlockingWorkerשמוגדרים כברירת מחדל הוצאו משימוש. חשוב לעבור ל-constructor החדש בהקדם האפשרי. גרסאות עתידיות יסירו את בנאי ברירת המחדל.
27 באוגוסט 2018
מנהל עבודה
הגרסה של WorkManager 1.0.0-alpha08 כוללת תיקוני באגים.
תיקוני באגים
- רכיבי WorkManager שתויגו באופן מפורש כהפעלה ישירה לא מודעים לכך שהם לא יופעלו במהלך הפעלה ישירה. בעתיד, נספק גרסה של WorkManager עם הרשאת אתחול ישירה. b/112665532
- תוקנה בעיה שבה עבודה לניסיון חוזר לא פעלה. b/112604021
- עבודה תקופתית קבועה שלא מתבצעת שוב ושוב (קשורה לבעיה שצוינה למעלה). b/112859683
- יש לפעול בהתאם למדיניות בנושא השהיה לפני ניסיון חוזר כשתהליך האפליקציה כבר פועל.
- הודעות חריגות תוקנו ב-
Dataכדי לציין שהמגבלה היא 10KB. - הערך המקסימלי של
Configuration.setMaxSchedulerLimit(int)הונמך ל-50 כדי להביא בחשבון זמן אחזור מסוים בסיום העיבוד שלJobScheduler. b/112817355
16 באוגוסט 2018
מנהל עבודה
הגרסה של WorkManager 1.0.0-alpha07 כוללת תיקוני באגים ושינויים קטנים בממשק ה-API.
תיקוני באגים
- תוקנה שאילתת SQL פוטנציאלית עם מגבלות שליליות שעלולות להחזיר מספר בלתי מוגבל של תוצאות.
- עבודה שהסתיימה בהצלחה מבטלת עכשיו את כל העותקים שבהמתנה של אותה עבודה בכלי תזמון אחרים. כתוצאה מכך, חרגת מהמגבלה של
JobSchedulerמשרות. b/111569265 - תוקן
ConcurrentModificationExceptionב-ConstraintTracker. b/112272753 - ההערות של סוג ההחזרה
Data.getBooleanArray(String)ו-Data.getIntArray(String)השתנו ל-@Nullableבמקום@NonNull. b/112275229
שינויים ב-API
Workerמציעה עכשיו כיתה חדשה,NonBlockingWorker. אין לכך השפעה על השימוש הנוכחי. בעתיד, נוסיף אתNonBlockingWorkerלישות עם תמיכה מלאה בפתרונות שרשור בהתאמה אישית.- ההערות של סוג ההחזרה
Data.getBooleanArray(String)ו-Data.getIntArray(String)השתנו ל-@Nullableבמקום@NonNull. b/112275229 - תוספי Kotlin: הוצאו משימוש את
Map.toWorkData()ונוספוworkDataOf(vararg Pair<String, Any?>)ברמה העליונה כדי לשמור על עקביות עם ממשקי ה-API הקיימים.
10 באוגוסט 2018
ניווט
ההשקה של הניווט 1.0.0-alpha05 כוללת תיקוני באגים.
תיקוני באגים
- תיקון באג שגורם להתנהגות שגויה של מקבץ אחורי. b/111907708
- תיקון באג ב-
equals()כיתות Args שנוצרו. b/111450897 - תיקון כשל ב-build ב-Safe Args. b/109409713
- תיקון המרה ממזהי משאבים לשמות Java b/111602491
- תיקון הודעות שגיאה לגבי יכולת null בפלאגין Safe Args.
- הוספת הערות חסרות של יכולת אפס.
6 באוגוסט 2018
גרסאות AndroidX של גרסה 2.0.0-rc01 של מחזור החיים, חדר וחלוקה לדפים. כל פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) לא השתנו מ-2.0.0-beta01.
1 באוגוסט 2018
מנהל עבודה
הגרסה של WorkManager 1.0.0-alpha06 כוללת תיקוני באגים.
תיקוני באגים
- למנוע נעילה של מסד נתונים במהלך תזמון עבודה. b/111801342
- תיקון באג שגורם ל-
PeriodicWorkלא לפעול לפי לוח הזמנים במצב 'נמנום'. b/111469837 - יש לתקן מרוץ תהליכים בזמן מגבלות מעקב שגורמות ל-
WorkManagerלקרוס. googlecodelabs/android-workmanager/issues/56 - יוצרים
WorkRequestייחודיים כשמשתמשים ב-WorkRequest.Builder#build(). b/111408337 - יש להפעיל את השימוש ב-
RescheduleReceiverרק כאשר ישWorkRequestצורך בו. b/111765853
24 ביולי 2018
מנהל עבודה
גרסת WorkManager 1.0.0-alpha05 כוללת תיקוני באגים חשובים ושינויים ברישום ביומן.
שינויים ב-API
- הוספנו ל-
WorkManager.getInstance()הערות עם@NonNullבמקום@Nullable. במקום זאת, אם הסינגלטון לא מאותחל כראוי במקרים של אתחול ידני, השיטה תקפיץIllegalStateException. זהו שינוי תוכנה שעלול לגרום לכשל ב-API. - נוסף ממשק API חדש,
Configuration.Builder.setMinimumLoggingLevel(int), שיכול לשלוט ברמת דרגת המלל של WorkManager. כברירת מחדל, WorkManager מתעד אתLog.INFOואילך. - החתימה של
Data.getString()שונתה, כך שהיא לא מקבלת יותר ערך ברירת מחדל (הוא לא מוגדר באופן מרומזnull). זהו שינוי תוכנה שעלול לגרום לכשל ב-API. - חלק מהשיטות סומנו כ-
@hideשנדרשות רק לשימוש פנימי. זה כולל את ה-constructor שלConstraints,Data.toByteArray()ו-Data.fromByteArray(byte[]). זהו שינוי תוכנה שעלול לגרום לכשל ב-API.
תיקוני באגים
- WorkManager כבר לא מבצע עבודה במהלך מקרים ידועים של גיבוי אוטומטי. ייתכן שכתוצאה מכך התרחשה תאונה. b/110564377
- תוקן התזמון הכפול של
PeriodicWorkRequestכשמשתמשים ב-JobScheduler. b/110798652 - תוקנה בעיה ב-
PeriodicWorkRequestשלא פעלה כראוי לאחר נמנום המכשיר. b/111469837 - תוקנה בעיה של עיכובים ראשוניים במהלך השימוש ב-JobDispatcher ב-Firebase. b/111141023
- תוקנו כמה בעיות אפשריות במרוץ ובתזמון.
- פינית
BroadcastReceiverפריטים שלא היה בהם צורך יותר. - ביצועים אופטימליים של תזמון מחדש כשאפליקציות מופעלות מחדש לאחר סגירה מאולצת.
- אישרת את הקריאה אל
TestScheduler.setAllConstraintsMet(UUID)לפני או אחרי הכניסה שלWorkRequestהנתון לתור. b/111238024
שינויי תוכנה שעלולים לגרום לכשלים
- הוספנו ל-
WorkManager.getInstance()הערות עם@NonNullבמקום@Nullable. - החתימה של
Data.getString()שונתה, כך שהיא לא מקבלת יותר ערך ברירת מחדל (הוא לא מוגדר באופן מרומזnull). - חלק מהשיטות סומנו כ-
@hideשנדרשות רק לשימוש פנימי. זה כולל את ה-constructor שלConstraints,Data.toByteArray()ו-Data.fromByteArray(byte[]).
19 ביולי 2018
ניווט
הניווט 1.0.0-alpha04 והפלאגין של Safe Args gradle המשויך אליו מכילים כמה שינויים ב-API, שינויים בהתנהגות ותיקוני באגים.
שינויים ב-API או בהתנהגות
- NavHostFragment תמיד יגדיר את ה-Fragment הנוכחי כמקטע הניווט הראשי, כדי לוודא שמנהלי מקטעים הצאצאים יוקפצו לפני ש-NavController החיצוני יקפוץ b/111345778
ארגומנטים בטוחים
- שינוי חמור:
app:typeהשתנה ל-app:argTypeכדי למנוע התנגשויות עם ספריות אחרות כמו ConstraintLayout 2.0.0-alpha1 b/111110548 - עכשיו אפשר ללחוץ על הודעות שגיאה מ-Safe Args : b/111534438
- מחלקות Args מאשרים עכשיו שמאפייני
NonNullאינם באמת ערכי null b/111451769 - הערות נוספות מסוג
NonNullנוספו לכיתות שנוצרו על ידי NavDirections ו-Args, b/111455455 b/111455456
תיקוני באגים
- תוקנה בעיה בלחצן 'הקודם' של המערכת לאחר קישור עומק ליעד של מקטע b/111515685
12 ביולי 2018
ניווט
הניווט 1.0.0-alpha03 והפלאגין של Safe Args gradle המשויך אליו מכילים כמה שינויים ב-API, שינויים בהתנהגות ותיקוני באגים.
שינויים ב-API או בהתנהגות
- נוספה שיטת NavigationUI.setupWithNavController עבור סרגל הכלים b/109868820
- שיטת הניווטUI.setupWithNavController ל-ColdsingToolbarLayout נוספה b/110887183
- PopBackStack() מחזירה את הערך False כשהמחסנית האחורית ריקה או כשמזהה היעד הנתון לא נמצא במקבץ האחורי b/110893637
- מעכשיו, ב-FragmentNavigator, המערכת מתעלמת מפעולות ניווט אחרי שמירת המצב ב-FragmentManager, וכך היא לא מתעדת את החריגים "לא ניתן לבצע את הפעולה הזו אחרי onSaveInstanceState" b/110987825
ארגומנטים בטוחים
- שינוי חמור: תווים לא אלפאנומריים בשמות של פעולות וארגומנטים יוחלפו באותיות גדולות של גמלים בשמות השיטות המתאימות של NavDirections
- לדוגמה
DemoController.indexיהפוך ל-setDemoControllerIndexb/79995048 - לדוגמה
action_show_settingsיהפוך ל-actionShowSettingsb/79642240
- לדוגמה
- שינוי משמעותי בכשלים: כברירת מחדל, ארגומנטים נחשבים כלא-null. כדי לאפשר ערכי null במחרוזת ובארגומנטים שניתנים לחלוקה, צריך להוסיף את הפונקציה
app:nullable="true"b/79642307 - עכשיו אפשר להשתמש ב-
app:type="long"עם defaultValues בצורת "123L" b/79563966 - עכשיו יש תמיכה בארגומנטים שניתנים לחלוקה, באמצעות שם מחלקה מוגדר במלואו עבור
app:type. ערך ברירת המחדל היחיד שנתמך הוא"@null"b/79563966 - מחלקות Args מטמיעות עכשיו את
equals()ואתhashCode()b/79642246 - עכשיו אפשר להחיל את הפלאגין Safe Args על פרויקטים בספרייה b/80036553
- עכשיו אפשר להחיל את הפלאגין Safe Args על פרויקטים של תכונות: b/110011752
תיקוני באגים
- תוקנו בעיות בניווט במהלך שיטות מחזור החיים של Fragment b/109916080
- תוקנו בעיות בניווט באמצעות תרשימים מקוננים מספר פעמים b/110178671
- תוקנו בעיות בשימוש במאפיין
setPopUpToעם היעד הראשון בתרשים b/109909461 - תוקנה בעיה שבה כל הערכים של
app:defaultValueהועברו כמחרוזות b/110710788 - aapt2 בחבילה עם Android Gradle Plugin 3.2 בטא 01 מוסיף עכשיו כללי שמירה לכל מאפיין
android:nameבקובצי ה-XML של הניווט b/79874119 - תוקנה דליפת זיכרון במהלך החלפת FragmentNavigator ברירת המחדל b/110900142
2 ביולי 2018
גרסאות AndroidX של גרסה 2.0.0-beta01 של מחזור החיים, חדר וחלוקה לדפים.
מחזור חיים
תיקוני באגים
- תוקן כלל מגן של LifecycleObserver שנועד לשמור רק הטמעות, ולא ממשקי משנה b/71389427
- תוקנו כללי הגנה ב-ViewModel על מנת לאפשר ערפול קוד (obfuscation) וכיווץ
חדר
שינויים ב-API או בהתנהגות
- הוספת את
RoomDatabase.Builder.setQueryExecutor()כדי לאפשר התאמה אישית של המיקומים שבהם מריצים שאילתות - נוספה תמיכה ב-RxJava2
Observable - הטמעות DAO ומסד נתונים שנוצרו הן סופיות עכשיו
תיקוני באגים
- צריך לציין את שם המחלקה/השדה בשדה 'לא ניתן למצוא את getter בשדה' שגיאה b/73334503
- תוקנה תאימות לאחור של RoomOpenHelper לגרסאות ישנות של Room b/110197391
חלוקה לדפים
תיקוני באגים
- תוכן תוקן שנעלם בחלק מהמקרים המשניים (placeholders מושבתים, 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 שונים של WorkManager. b/110344065
רישום חריגים לא מזוהים שהתרחשו במהלך ביצוע ה-Worker. b/109900862
מותרות העברות הרסניות של מסדי נתונים למקרה שתרצה לחזור לגרסה ישנה יותר של WorkManager. b/74633270
תוקנה קריסת העברה אם יצרת תגים משתמעים כפולים. זוהי בעיה נדירה מאוד שמתרחשת רק אם השתמשת בעצמך באותו פורמט משתמע של תג.
19 ביוני 2018
חדר
החדר 1.1.1 שוחרר. פריט התוכן הזה זהה לחדר 1.1.1-rc1.
מנהל עבודה
WorkManager 1.0.0-alpha03 יצא משימוש.
תיקוני באגים
תוקן מרוץ תהליכים בהטמעה מבוססת
AlarmManager. b/80346526.תוקנו משימות כפולות במהלך שימוש ב-
JobSchedulerלאחר הפעלה מחדש של המכשיר.משימות עם טריגרים של Content 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יכול להבחין בין ביטול ביוזמת המשתמש לבין עצירה זמנית במערכת. אם מזינים סוג כלשהו של עצירה, הפונקציהWorker.isStopped()מחזירהtrue. הפונקציהWorker.isCancelled()מחזירה את הערךtrueכשהעבודה בוטלה באופן מפורש. b/79632247הוספת תמיכה ל-JobParameters#getNetwork() ב-API 28. המידע הזה נחשף דרך
Worker.getNetwork().הוספת את
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)כדי שאפשר יהיה לאכוף את מספר המשימות שניתן לשלוח אלJobSchedulerאו אלAlarmManager. הפעולה הזו מונעת מ-WorkManagerלתפוס את כל משבצות ה-JobSchedulerהזמינות שלך.נוספה
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId), שעוזרת להגדיר טווח שלJobSchedulerמזהי משימות בטוחים לשימוש שלWorkManager. b/79996760הפונקציה
Worker.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, שהוא שם המחלקה שמוגדר במלואו שלWorker. הפעולה הזו מאפשרת להסירWorkRequestבליtagאו כש-idלא זמין. b/109572351
שינויי תוכנה שעלולים לגרום לכשלים
השם של
Worker.WorkerResultהשתנה. השם החדש הואWorker.Result.Worker.onStoppedכולל עכשיו פרמטרisCancelledנוסף שמוגדר ל-trueכאשרWorkerבוטל באופן מפורש.
7 ביוני 2018
הניווט 1.0.0-alpha02 שוחרר.
ניווט
שינויים בהתנהגות
FragmentNavigatorמשתמש עכשיו ב-setReorderingAllowed(true). b/109826220בניווט עכשיו ארגומנטים מסוג URLDecodes שמנותחים מכתובות URL של קישורי עומק. b/79982454
תיקוני באגים
תוקן
IllegalStateExceptionבהפעלת ניווט מ-methods של מחזור החיים של Fragment. b/79632233הניווט תלוי עכשיו בספריית התמיכה בגרסה 27.1.1, כדי לתקן הבהובים כשמשתמשים באנימציות. b/80160903
תוקן
IllegalArgumentExceptionבשימוש ב-defaultNavHost="true" בתור מקטע צאצא. b/79656847תוקן
StackOverflowErrorבמהלך השימוש ב-NavDeepLinkBuilder. b/109653065תוקן
IllegalArgumentExceptionבניווט חזרה לתרשים בתוך תרשים. b/80453447תוקנה בעיה במקטעים חופפים במהלך השימוש ב-
launchSingleTop. b/79407969אפליקציית הניווט בונה עכשיו את המקבץ הסינתטי החוזר הנכון לתרשימים בתצוגת עץ. b/79734195
עכשיו ממשק הניווט ידגיש את הפריט הנכון כשמשתמשים בתרשים מקונן בתור
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()כדי לבצע פעולות ניקוי קלות.ה-API של
Worker.getTags()מחזיר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
חלוקה לדפים
החלוקה לדפים של rxjava2 עוברת לגרסה החדשה של המועמד, ללא שינויים מהשלב הראשון
אלפא.
8 במאי 2018
חלוקה לדפים 1.0, ניווט וגרסת אלפא של WorkManager, חדר 1.1, AndroidX
ההחלפה 1.0.0 והחדר 1.1.0 ישוחררו, יחד
עם גרסאות אלפא לשני רכיבי ארכיטקטורה חדשים – ניווט ו-WorkManager.
אין שינויים בהחלפה ובחדר מאז המועמדים האחרונים להשקה.
ספרייה חדשה: ניווט
ניווט מספק framework לבניית אפליקציה
ניווט. הגרסה הראשונית הזו היא 1.0.0-alpha01.
ספרייה חדשה: WorkManager
WorkManager מפשט את התזמון והביצוע של
עבודת רקע מובטחת ומבוססת-אילוצים. הגרסה הראשונית הזו
1.0.0-alpha01
AndroidX
רכיבי הארכיטקטורה עוברים להיות חלק מ-AndroidX, כולל
שמות חבילות, שמות של ארטיפקטים ויחסי תלות בספריות AndroidX אחרות.
הם מתפרסמים בגרסה 2.0.0-alpha1 לשימוש בשילוב עם אפליקציות אחרות
ספריות AndroidX.
תוספי Kotlin
ViewModel, ReactiveStreams ו-Sqlite (רכיב מסד הנתונים של Room) נוספו ספריות תוספים של Kotlin כחלק מגרסת האלפא של AndroidX. לחשבון הניווט ו-WorkManager כוללים מודולים מסוג 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 שוחררו.
חלוקה לדפים
אין לנו בעיות ידועות נוספות או תכונות חדשות מתוזמנות
חלוקה לדפים של גרסת 1.0.0. עליך לשדרג את הפרויקטים כדי להשתמש ב-1.0.0-rc1 וב-
תעזור לנו להילחם במבחן כדי שנוכל לשלוח 1.0.0 סלע גדול.
אין שינויים בגרסה הזו, היא זהה ל-1.0.0-beta1.
חדר
תיקוני באגים
- תיקון שגיאת הידור (compilation) כש-POJO של Kotlin מפנה לישות קשר ש הוגדרה ב-Java b/78199923
5 באפריל 2018
החדר 1.1.0-beta2, החלוקה לדפים 1.0.0-beta1 ו-Ping RxJava 1.0.0-alpha1 ישוחררו.
החלוקה לדפים תהיה בגרסת בטא לזמן קצר לפני שיתקדם לפרסום המועמד.
אנחנו לא מתכננים שינויים נוספים ב-API של Paging 1.0, ויש רף גבוה מאוד לביצוע שינויים ב-API.
התמיכה באלפא RxJava2 בפינגים מוצעת כמודול אופציונלי נפרד (android.arch.paging:rxjava2:1.0.0-alpha1)
והוא ינוסח באופן זמני בנפרד, עד שיתייצב.
הספרייה החדשה מספקת חלופה ל-RxJava2 ל-LivePagedListBuilder, שמסוגלת לבנות
Observable שנ' ו-Flowable, שנמשכת Scheduler במקום Executor:
Kotlin
val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable()
Java
Observable<PagedList<Item>> pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable();
חלוקה לדפים
תכונות חדשות
RxPagedListBuilderנוסף באמצעות פריט המידע החדש שנוצר בתהליך הפיתוח (Artifact) שלandroid.arch.paging:rxjava2.
שינויים ב-API
שינויים ב-API שנועדו להבהיר את התפקיד של אדמינים ב-builders:
השם של
setBackgroundThreadExecutor()שונה ל-setFetchExecutor()(ב-PagedList.Builderוב-LivePagedListBuilder)השם של
setMainThreadExecutor()השתנה ל-setNotifyExecutor()(ב-PagedList.Builder).
בוצע תיקון של חבר אחד (
PagedList.mCallbacks) כפרטי.
תיקוני באגים
LivePagedListBuilderמפעיל את הטעינה הראשונית שלPagedListבקובץ ה-exe שצוין, במקום את מאגר ה-thread של רכיבי Arch.תוקנה התנהגות ביטול תוקף ב-wrappers פנימיים של
DataSource(משמש להטמעה שלDataSource.map, וגם טעינהPositionalDataSourceמושבתת באמצעות placeholder) b/77237534
חדר
תיקוני באגים
תוקן באג קריטי בהטמעות של Rx
Singleו-Maybeבחדר ממחזר את השאילתה מראש, וגורם לבעיות אם מוסיפים יותר מ-1 של הצופה, שהוחזרוSingleאוMaybe. b/76031240RoomDatabase.clearAllTables לא יבצע
VACUUMאת מסד הנתונים אם הוא נקרא בעסקה. b/77235565
21 במרץ 2018
החדר 1.1.0-beta1, החלוקה לדפים 1.0.0-alpha7 ומחזור החיים 1.1.1 יושקו.
חדר
שינויים ב-API
- על סמך המשוב מבדיקת ה-API, הפרמטר
@RawQueryלא מאפשר יותר להעבירStringכפרמטר של השאילתה. צריך להשתמש ב-SupportSQLiteQuery. (כדי ליצור בקלות מכונה של SupportSQLiteQuery עם תמיכה בארגומנטים, אפשר לעיין במאמר SimpleSQLiteQuery). - השיטה fallbackToDestructiveMigrationFrom של RoomDatabase.Builder מאפשרת עכשיו להשתמש ב-
vararg intבמקום ב-vararg Integer.
תיקוני באגים
עכשיו, roomDatabase.clearAllTables מנסה להחזיר את המרחב למערכת ההפעלה על ידי הגדרה של נקודת ביקורת ב-WAL ו
VACUUMניהול של מסד הנתונים.עכשיו
@RawQueryמקבל כל Pojo לנכסobservedEntitiesכל עוד ה-Pojo מפנה לישות אחת או יותר דרך השדותEmbeddedאוRelation. b/74041772חלוקה לדפים: הטמעת DataSource של Room מטפלת עכשיו בצורה תקינה ביחסי תלות של טבלאות מרובות (כמו קשרים ושילובים). בעבר, אלה לא היו מסוגלים להפעיל תוצאות חדשות, או שלא היה אפשר להדר אותן. 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. ההחלפה לגרסת alpha7 תלויה בהעברה של המחלקה Function שצוינה למעלה, לכן צריך לעדכן את התלות של lifecycle:runtime ל-android.arch.lifecycle:runtime:1.1.1.
החלוקה לדפים של alpha7 מתוכננת להיות הגרסה הסופית לפני גרסת הבטא של היטים של ההחלפה.
שינויים ב-API
- ל-
DataSource.LoadParamsאובייקטים יש עכשיו constructor ציבורי ו-DataSource.LoadCallbackאובייקטים הם עכשיו מופשטים. הפעולה הזו מאפשרת גלישתDataSourceאו בדיקה ישירה שלDataSourceבאמצעות סימולציה של קריאה חוזרת (callback). b/72600421 - ממפים של DataSource ו-DataSource.מפעל
map(Function<IN,OUT>)מאפשר לשנות, לעטוף או לקשט תוצאות שנטענות על ידיDataSource.- הפונקציה
mapByPage(<List<IN>,List<OUT>>)מאפשרת את אותו הדבר גם בעיבוד באצווה (למשל, אם פריטים שנטענים מ-SQL צריכים גם לשלוח שאילתה למסד נתונים נפרד, אפשר לעשות זאת כאצווה).
- השיטה
PagedList#getDataSource()נוספה כאמצעי נוחות b/72611341 - כל הכיתות שהוצאו משימוש הוסרו מה-API, כולל שאר המחלקות של
recyclerview.extensionsוה-LivePagedListProvider. - כדי להפעיל את הפונקציונליות של המפה,
DataSource.Factoryמשתנה מממשק למחלקה מופשטת.
תיקוני באגים
- שינינו את ה-Builds כדי להפוך לסופיים. b/70848565
- ההטמעה של החדר
DataSourceתוקנה והיא יכולה לטפל בשאילתות מרובות טבלאות. התיקון הזה נכלל בחדר 1.1.0-beta1, כפי שמפורט למעלה. - תוקן באג שגרם לכך שלא ניתן יהיה להפעיל את
BoundaryCallback.onItemAtEndLoadedעבורPositionalDataSourceאם placeholders מופעלים ו הגודל הכולל הוא כפולה מדויקת של גודל הדף.
2 במרץ 2018
החדר 1.1.0-alpha3 שוחרר. זוהי גרסת האלפא המתוכננת האחרונה עבור
חדר 1.1.0.
שינויים ב-API
addObserverו-removeObserverשל INVALIDationTracker methods מסונכרנות עכשיו וצריך לקרוא להן בשרשור שהוא לא ממשק משתמש. כך ניתן למנוע מרוץ תהליכים בזמן תצפיות על טבלאות.יש שיטה חדשה של
clearAllTables()ב-RoomDatabase שתקצר את כל תוכן הטבלה. b/63807999לפונקציה
SupportSQLiteQueryיש עכשיו שיטהgetArgCount()שמחזירה את המספר של פרמטרים של שאילתה. b/67038952
תיקוני באגים
עכשיו יש תמיכה תקינה בשאילתות חיפוש ב-
@RawQuery. b/72600425עכשיו אפשר לתת לחדר את השמות הנכונים של
Daoכיתות, כדי למנוע התנגשויות בין שמות. 2 ממשקים או יותר שלDaoהם מחלקות פנימיות באותה חבילה ויש להם את אותו שם. b/73536380סוגי שדות גנריים של
Pojoמנותחים כראוי כחברים בקבוצה המתרחבת בכיתה. b/73534868הפרמטרים של שאילתות בממשקים של
Daoשעוברים בירושה מהתלות פריטי מידע שנוצרו בתהליך הפיתוח (Artifact) מנותחים עכשיו כראוי. b/68118746מעכשיו, שאילתות שנוצרו עבור
@Relationצריכות לסמן בתו בריחה (escape) את שמות השדות. b/70925483
27 בפברואר 2018
החלוקה לדפים של 1.0.0-alpha6 זמינה לצד גרסה 27.1.0 של ספריית התמיכה.
ListAdapter וכמה כיתות קשורות הועברו ישירות מספריית הדפים ל-Recyclerview, ביחד עם כמה שמות אחרים כדי להבהיר את התפקיד של מחלקות מסוימות. גרסת האלפא הזו של החלוקה לדפים היא כנראה האחרונה שבה יימצאו שינויי API משמעותיים ב-API.
שינויים ב-API
- הכיתות הועברו ל-recyclerview-v7:
ListAdapter
- שמות הכיתות השתנו והם הועברו ל-recyclerview-v7:
ListAdapterHelper->AsyncListDifferListAdapterConfig->AsyncDifferConfigDiffCallback->DiffUtil.ItemCallback
- שמות של כיתות שהשם שלהם השתנה בתוך זמן הריצה של החלוקה לדפים:
PagedListAdapterHelper->AsyncPagedListDiffer
הכיתות שהועברו היו שימושיות בנוסף ל-RecyclerView, ללא קשר לספריית הדפים. המשמעות היא שאפשר להשתמש בהן בלי להסתמך על גרסת אלפא של ההחלפה, אבל צריך גם לשדרג באפליקציות שבהן נעשה שימוש בהחלפה לאלפא 6 ולגרסת תמיכה 27.1.0 בו-זמנית.
** מדריך העברה לפורמט Alpha6: **
- עדכון יחסי התלות של החלוקה לדפים, ושל תצוגת מיחזור ל-
android.arch.paging:runtime:1.0.0-alpha6ול-com.android.support:recyclerview-v7:27.1.0- צריך לבצע אותם בו-זמנית, מכיוון ש-ListAdapter הועבר מ-RecyclerView ל-RecyclerView
- יש לעדכן את כל ההפניות של
ListAdapterHelperל-AsyncListDiffergetItem(index)/getItemCount()הוסרו, לטובת דפוס הקריאה שלgetCurrentList().getItem(index)ו-getCurrentList().size(), שהם בעלי אופי בוטה יותר.
- יש לעדכן את כל ההפניות של
ListAdapterConfigל-AsyncDifferConfig - יש לעדכן את כל ההפניות של
DiffCallbackל-DiffUtil.IttemCallback - יש לעדכן את כל ההפניות של
PagedListAdapterHelperל-AsyncPagedListDiffer - עדכון ההפניות של
setList()ל-submitList()- שינה את השם כדי להבהיר את האופי האסינכרוני של הפרשי הרשימות
תיקוני באגים
- תוקן העברה של מיקום ראשוני שגוי לטעינה ראשונית כאשר placeholders מושבתות. b/73513780
15 בפברואר 2018
החדר 1.1.0-alpha2 שוחרר.
תכונות חדשות
אפליקציית Room תומכת עכשיו בפתיחת מסד נתונים במצב כתיבה מראש ביומן. במצב הזה, הכתיבה שלכם לא תחסום יותר את שאילתות הקריאה. למרות הוא צורך יותר זיכרון (עקב חיבורים מרובים), בדרך כלל מהר יותר. כברירת מחדל, אפליקציית Room תשתמש ב-WAL אם המכשיר הוא
API 16ומעלה והוא הוא לא מכשיר עם זיכרון נמוך. אפשר לשלוט בהתנהגות הזו באמצעותsetJournalMode()ב-RoomDatabase.Builder. b/67757002תמיכה ב-Guava: חדר תומך עכשיו בהחזרת גואבה
Optional<T>אוListenableFuture<T>בשאילתות שלDAO. כדי להשתמש בתכונהListenableFuture<T>, צריך לייבא פריט מידע (Artifact) אחד (guava) מהחדר (android.arch.persistence.room:guava:1.1.0-alpha2).החדר תומך עכשיו בהחזרת
java.util.Optional<T>משאילתות שלDAO.שיטות ממשק עם הטמעות ברירת מחדל נתמכות עכשיו ב-
@Transactionmethods ב-DAOכיתות. התכונה הזו פועלת גם לגביJava 8וגםKotlin. b/72416735
תיקוני באגים
מבנים עם
@Relationלא יגרמו לשגיאת הידור אם יש constructor אחר שאפשר להשתמש בו. b/72884434עכשיו, המערכת תסמן בתו מילוט (escape) שמות של טבלאות באמצעות
'ב-@Queryשיטות בתו בריחה (escape) כמו שצריך לכלי למעקב אחרי ביטול תוקף. b/72366965עכשיו מוגדר בחדר השימוש בהערות
@Metadataשל Kotlin כדי לקרוא את מבנה הכיתה. במהלך עיבוד ההערות. כלומר, גם אם הפוג'ו עובר בירושה של ה-constructor, ולכן אפשר לקרוא אותן כמו שצריך. b/67181813תוקנה בעיה במציאת נתיבי העברה לאחור. b/72153525
סוגי עמודות שלא מוגדרים כברירת מחדל מטופלים עכשיו כראוי כשעוברים ממסד הנתונים הקיים לחדר. b/71953987
עכשיו החדר מטפל כראוי בשדות
boolean?בכיתות ב-Kotlin. b/72786402
22 בינואר 2018
פורסמו מחזורי החיים 1.1.0, החדר 1.1.0-alpha1 והחלוקה לדפים 1.0.0-alpha5.
מחזור חיים 1.1.0
שינויים באריזה
עכשיו יש יחסי תלות חדשים הרבה יותר קטנים:
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
שינויים ב-API
- הפריטים
LifecycleActivityו-LifecycleFragmentשהוצאו משימוש הוסרו - יש להשתמש בהםFragmentActivity,AppCompatActivityאו תמיכה ב-Fragment. @NonNullהערות נוספו ל-ViewModelProvidersול-ViewModelStores- ה-constructor של
ViewModelProvidersהוצא משימוש – צריך להשתמש ישירות בשיטות הסטטיות שלו - ההוראה
ViewModelProviders.DefaultFactoryהוצאה משימוש. צריך להשתמש ב-ViewModelProvider.AndroidViewModelFactory - שיטת
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)הסטטית נוספה לאחזורFactoryסטטי שמתאים ליצירת מכונותViewModelו-AndroidViewModel.
חדר 1.1.0-alpha1
תכונות חדשות
RawQuery: ה-API החדש הזה מאפשר ל-@Daomethods לקבל את ה-SQL כפרמטר של שאילתה b/62103290, b/71458963fallBackToDestructiveMigrationsFrom: ה-API החדש הזה ב-RoomDatabase.Builderמאפשר שליטה פרטנית יותר לגבי המקור של גרסאות הסכימה: העברות הרסניות מותר (בהשוואה ל-fallbackToDestructive Migration) b/64989640- אפליקציית Room תומכת עכשיו רק בממשקי API חדשים יותר של דפים (alpha-4+ ), ומפחיתה את התמיכה בגרסאות שהוצאו משימוש
LivePagedListProviderכדי להשתמש בגרסת האלפא החדשה של החדר, צריך להשתמש בחלוקה לדפיםalpha-4ואילך, ועוברים מ-LivePagedListProviderל-LivePagedListBuilderאם עדיין לא עשית זאת.
תיקוני באגים
- תמיכה משופרת לסוגי Kotlin Kapt. b/69164099
- סדר השדות כבר לא מבטל את תוקף הסכימה. b/64290754
חלוקה לדפים של 1.0.0-alpha5
תיקוני באגים
- תיקון טעינת הדף כאשר placeholders מושבתים b/70573345
- רישום נוסף ביומן למעקב אחר הבאג DisallowArgumentexcept שb/70360195 (ותיקון ספקולטיבי בצד החדר)
- תיקוני קוד לדוגמה של Javadoc b/70411933, b/71467637
11 בדצמבר 2017
החלוקה לדפים של alpha4-1 תפורסם. זוהי גרסה קטנה של תיקון באגים לפי תקן אלפא 4.
תיקוני באגים
- אין לבדוק את הפרמטרים של הקריאה החוזרת לאיתור מקורות נתונים לא חוקיים. b/70353706, b/70360195
7 בדצמבר 2017
החלוקה לדפים של alpha4 הושקה עם שינויים ותוספות משמעותיים, בעיקר
ברשת לטירגוט ובתרחישים לדוגמה של רשת ומסד נתונים.
שינויים ב-API
DataSourceהוא עכשיו API אסינכרוני כדי להקל על החלוקה לדפים ישירות מהרשת:- נקודת כניסה אחת לגודל הראשוני ולנתונים הראשוניים
- תמיכה בניסיונות חוזרים של הרשת על ידי החזקה של קריאה חוזרת ושליחת נתונים במועד מאוחר יותר
- קריאות חוזרות (callbacks) של פרוטוקול Threadsafe מאפשרות טעינה אסינכרונית ליצירת רשת יחידה
בוצע גיבוי של
PagedListב-thread של ממשק המשתמש. - התנהגות שגיאה ברורה יותר לגבי פרמטרים של טעינה ראשונית
השם של
TiledDataSourceהשתנה ל-PositionalDataSourceכדי לשקף את השם אינדקס מבוסס-מיקום, והעובדה שהיא לא מתנגנת כאשר מצייני מיקום (placeholders) מושבת.PageKeyedDataSourceנוסף כדי לתמוך באסימונים הבאים/הקודמים שמוטמעים ב- מתבצעת טעינה של דף הרשת. השם שלKeyedDataSourceהשתנה ל-ItemKeyedDataSourceכדי ליצור ההבדל ברור.LivePagedListBuilderו-DataSource.FactoryמחליפיםLivePagedListProvider. ה-builder מספק את אותה יכולת עם התאמה אישית וברירות מחדל פשוטות יותר. היצרן מאפשר יצירה שלDataSourceכך שלא יהיה תלוי ב-LiveData.הוספנו את
PagedList.BoundaryCallbackלתרחיש לדוגמה של מסד הנתונים + רשת.ה-constructor של
PagedList.Builderלוקח עכשיו אתDataSource+PagedList.Configדומים יותר ל-LivePagedListBuilder, ומאפשרים למפעיל יהלום את שפת Java, או סוגים המוסקים ב-Kotlin.PagedList.getConfig()נוסף/ה, ועכשיו ב-PagedList.Configיש חבר/ה ציבורי/ת נכסים.ב
KeyedDataSource.loadBefore()לא צפויות יותר תוצאות להפוך.הוספת את
PagedListAdapter.onCurrentListChanged()כדי להאזין לעדכונים PagedList מוצגת.
תיקוני באגים
- תוקן IndexOutOfBounds וגם ב-PagedListAdapter(Helper) b/67883658
1.0.0 - 6 בנובמבר 2017
כל הרכיבים העיקריים (מלבד החלוקה לדפים) הם עכשיו 1.0.0. זו בדיוק אותה
להשיק בתור rc1 מלבד שינוי אחד בספרייה reactivestreams.
תיקוני באגים
LiveDataReactiveStreamsמוטמע כמו שצריך המפרט של Reactive Streams. 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). אפשר לקרוא מידע נוסף בנושא מסמכי תיעוד בנושא מחזורי חיים.
תיקוני באגים
חדר:
- החדר תלוי עכשיו בפריטי המידע שנוצרו בתהליך הפיתוח (Artifact) האחרונים שמתקנים את
OutOfMemoryבמהלך ההידור. b/62473121 - עכשיו אפשר להוסיף הערות לשיטות
Queryבאמצעות@Transaction. פרטים נוספים זמינים במסמכי העזרה בנושא@Transaction. b/65112315 - כיתה אחת (
StringUtil) בחדר הוסרה מהציבור API (הוא מעולם לא נועד להיות API ציבורי).
- החדר תלוי עכשיו בפריטי המידע שנוצרו בתהליך הפיתוח (Artifact) האחרונים שמתקנים את
מחזורי חיים:
LiveDataפועל בצורה תקינה כשהפעילות מכוסה באופן חלקי ב-API < 24. b/65665621ל-methods
OnLifecycleEventבכיתות הורה קוראים עכשיו בצורה נכונה, או אם אי אפשר, תודפס אזהרה במהלך ההידור. b/63474615מחזור החיים מכיל עכשיו
WeakReferenceLifecycleOwner כדי למנוע הדלפה של Lifecycleowner אם מחזור החיים נשמר בזיכרון למשך זמן ארוך יותר מהרגיל (זהו רק אמצעי זהירות, עדיין צריך להיזהר להדליף את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. (לא יהיה צורך בכך כשהמשלוח של 1.0.0 יהיה)
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
- עכשיו
חדר:
- עכשיו 'חדר' מדפיס שגיאה בזמן הקומפילציה כשה-Pojo שהוחזרה
רכיב ה-method
@Queryמכיל שדה@NonNullשלא תואם לאף אחד מהערכים של בתגובת השאילתה. אם השדה הוא@Nullable, חדר בלבד מדפיסה אזהרה. b/67115337 - החדר מאמת עכשיו מדדים בגרסאות חדשות יותר של מערכת ההפעלה. b/63132683
- אם יש כמה, של מבנים תואמים בפוג'ו. b/67353427
- המפתחות הראשיים בעמודה יחידה יכולים להיות
Nullableאם הםIntegerאוLong. b/67086876 - הכלי למעקב אחרי ביטול נעילה מטפל כראוי בכניסה מחדש במצב בדיקה. b/65471397
- החדר בודק עכשיו אם יש תווים לא חוקיים בעמודה ובטבלה
שמות בזמן הידור (תווים לא חוקיים:
`,"). b/64749111
- עכשיו 'חדר' מדפיס שגיאה בזמן הקומפילציה כשה-Pojo שהוחזרה
רכיב ה-method
21 בספטמבר 2017
בגרסה הזו, כל המודולים של רכיבי הארכיטקטורה מגיעים לסך של beta 1 לפחות
(מלבד ספריית הדפים החדשה, alpha 2).
אנחנו לא מתכננים שינויים נוספים ב-API. עשויים לקרות שינויים לא מתוכננים, אבל
סרגל לשינוי כלשהו של API לפני היציבות של 1.0.0 הוא גבוה מאוד וסביר להניח שהוא לא יקרה.
- פעילות במחזור החיים ו LifeFragment יוסר לפני היציבות של
1.0.0. הם לא נחוצות כשמשתמשים בספריית התמיכה בגרסה26.1.0ואילך.
בניגוד לשלב האלפא, שלב הבטא מתוכנן להיות קצר מאוד.
שינויים בגרסאות
- מעכשיו התוספים למחזור החיים והחדרים הם
beta 1 - החלוקה לדפים היא עכשיו
alpha 2 - אין שינויים במחזורי החיים (זמן ריצה, משותף) וב-Arc Core (תהליך נפוץ). שני פריטי המידע האלה שנוצרו בתהליך הפיתוח (Artifact)
הן גרסה
1.0.0מאז 13 בספטמבר.
ארטיפקטים חדשים
למחזורי החיים יש עכשיו פריט מידע שנוצר בתהליך פיתוח (Artifact) בשם
common-java8. פריט המידע הזה שנוצר בתהליך הפיתוח (Artifact) מכיל ממשק חדש שנקרא DefaultLifecycleObserver; איזה יש הטמעות ברירת מחדל לכל ה-methods של מחזור החיים. אם משתמשים בשפת Java 8, כדאי להעדיף את פריט המידע הזה על פני הערות.- עקב באג ב-
beta1, צריך להוסיף תלות מפורשת ב- מודולandroid.arch.lifecycle:common:1.0.1כדי להשתמש בארטיפקטcommon-java8החדש. הבעיה הזו תיפתר בbeta2.
- עקב באג ב-
שינויים באריזה
- המיקום של
android.arch.persistence.room.dbהועבר אלandroid.arch.persistence.db - המיקום של
android.arch.persistence.room.db-implהועבר והשם שלו השתנה ל-android.arch.persistence.db-framework
שני פריטי המידע האלה כבר תלויים בחדר, כך שאלא אם השתמשתם בהם ישירות, אתם לא צריכים לשנות שום דבר בקובצי ה-build שלכם.
שינויים ב-API
חדר:
- עכשיו יש תמיכה בהערה @ColumnInfo להגדרת איסוף בעמודה. b/62007004
- כברירת מחדל, המערכת מתעלמת משדות
transient, אלא אם מוסיפים להם הערות עם@ColumnInfo,@Embeddedאו@Relation. b/62600692 - צריך להוסיף הערות למפתחות ראשיים באמצעות
@NonNull, אלא אם הם נוצרים באופן אוטומטי. b/64292391- יכול להיות שהשינוי הזה ידרוש העברה של סכימה. מצטערים על אי הנוחות.
- נוספה הערת נוחות חדשה (@Transaction)
מבטל את השיטה
DAOומריץ אותה בתוך עסקה.
תמיכה במסד הנתונים של SQLite:
- שינויים ב-API בהגדרת מסד הנתונים. b/65349673 b/65499876
חלוקה לדפים:
- תיעוד משופר של הדפדוף עם עוד דוגמאות והערות בשרשור.
תיקוני באגים
- חדר:
- מחרוזות מרובות שורות של Kotlin בשיטות של
@Queryמטופלות כראוי. b/65809374
- מחרוזות מרובות שורות של Kotlin בשיטות של
- חלוקה לדפים:
- פריט המידע שנוצר בתהליך הפיתוח (Artifact) כבר לא תלוי ב-junit. b/65690261
1.0.0 אלפא 9-1 – 13 בספטמבר 2017
זו גרסה ראשית שבה ארטיפקטים של מחזור החיים העיקריים (זמן ריצה, נפוץ) וליבת קשת (משותף)
פוטנציאל החשיפה לגרסה היציבה 1.0.0.
במקביל לשינוי הזה, ספריית התמיכה בגרסה 26.1.0 תלויה עכשיו בספריות האלה. גם AppCompatActivity וגם מקטע תמיכה מטמיעים עכשיו את הממשק LifecycleOwner.
הגרסה הזו תלויה גם בספריית התמיכה 26.1.0 כדי לנצל את השילוב החדש.
ספרייה חדשה: חלוקה לדפים
הגרסה הזו כוללת גם ספרייה חדשה בשם Paging, שמאפשרת לטעון בקלות מודעות
את מערכי הנתונים ב-RecyclerView במקטעים כשיש צורך. הדפים שוחררו בתור alpha1
ויהיה לו מחזור הפצה משלו.
שינויים ב-API
- המחלקות הבאות הוצאו משימוש ויוסרו בגרסאות עתידיות:
תיקוני באגים
אם האפליקציה כוללת את ההערה בנתיב הכיתה, הכיתות שנוצרו מתווספות עכשיו ל-
@Generated. b/35754819תוקן באג השוואת הצופים ב-MediatorLiveData. b/64413274
מעכשיו אפשר להשתמש בשאילתות
WITHשל SQLite באמצעות [LiveData]. [ref-LiveData] b/62510164תוקן באג שגרם לכך שהרשימה הלא נכונה לא נשלחה באופן תקין אם יש יותר מטבלה אחת הוא נבדק. b/65099281
תוקן באג שגרם ל-חדר ליצור קבצים שונים ב-Windows. b/64470691
עכשיו יש תמיכה ב- LifecycleObservers בחבילת הבסיס (root). b/62310817
1.0.0 אלפא 9 – 16 באוגוסט 2017
תיקוני באגים
- תוקן באג ב-LiveData. המערכת התעלמה מה-Observer השני כשהסיר הראשון מ-method
onChanged. b/64285805
1.0.0 אלפא 8 – 1 באוגוסט 2017
שינויים בהתנהגות
- האילוץ
NOT NULLנוסף לעמודות או לעמודות של פרימיטיביות עם הערות עם NonNull. הפעולה הזו משנה את המבנה של כך שאם אתם כבר משתמשים ברכיבי ארכיטקטורה אלפא 7 או גרסאות קודמות, צריך לבצע העברה אם רוצים לשמור את הנתונים, או להשתמש השיטהfallbackToDestructiveMigration()ב-builder. b/62007004
שינויים ב-API
- התוסף SupportSQLiteProgram הורחב עכשיו ל-AutoCloseable. b/63131997
1.0.0 אלפא 7 – 26 ביולי 2017
תיקוני באגים
תוקן באג קריטי בשיטת LifecycleRegistry
removeObserver, שגרם לפגיעה בקריאה של LifecycleObserver.תוקן InvalidationTracker למסדי נתונים מותאמים אישית b/63162311
1.0.0 אלפא 6 – 25 ביולי 2017
שינויים בהתנהגות
סדר הקריאות ל-LifecycleObserver השתנה. בעבר נשלחה תמיד קריאה לצופים לפי הסדר שבו הם נוספו: אם הפרמטר
observer1יתווסף לפניobserver2, הוא יקבל אתON_CREATEואת כל שאר האירועים לפניobserver2. הדבר לא נכון יותר לגבי אירועי השמדה, מבחינתם של התצפיתנים קוראים בסדר הפוך. לכן, ההתנהגות הנוכחית היא: אם מוסיפים אתobserver1לפניobserver2, אזON_CREATEנשלח קודם אלobserver1, ואז אלobserver2(אותו הדבר קורה ב-ON_STARTוב-ON_RESUME), אבל האירועON_PAUSEנשלח קודם אלobserver2ורק אחר כך אלobserver1(באופן זהה ב-ON_STOPוב-ON_DESTROY).אם ההעברה חסרה, הפעולה תתרחש חריגה מהחדר. בעבר Room היה פשוט מוחק את מסד הנתונים, אבל עכשיו הוא קורס. המפתחים יכולים להביע הסכמה לפעולת הניקוי באמצעות קריאה ל-builder API. b/63872392
שינויים ב-API
השיטה
fallbackToDestructiveMigration()נוספה אלRoomDatabase.Builderאל לנקות את מסד הנתונים אם ההעברה חסרה. b/63872392רכיבי הארכיטקטורה תלויים עכשיו בספריית התמיכה 26.0.0
תיקוני באגים
תיקנו את הטיפול ב-@Relation שהוצב ב-@Embedded. b/63736065
תיקנו העברות של בדיקות לטבלאות עם מפתח ראשי שצורף אוטומטית. b/63393618
עכשיו @שאילתות להרצת שאילתות DELETE או UPDATE מקבלות ארגומנטים בצורה נכונה. b/63872538
עכשיו ViewModels נשמרים, כשמקטע הבעלים נמצא במקבץ האחורי ושינוי ההגדרות מתרחש פעמיים. b/38445801
1.0.0 אלפא 5 – 18 ביולי 2017
שינויים ב-API
נוספה שיטת קריאה חוזרת (callback) אל
RoomDatabase.Builderכדי לבדוק מתי מסד נתונים נוצר או נפתח. b/62699324@Query עשוי עכשיו להחזיר את RxJava
MaybeאוSingle. b/62231019
כדי להוסיף תמיכה של RxJava לחדר, צריך להסתמך על ארטיפקט של android.arch.persistence.room:rxjava2.
תיקוני באגים
תוקנו
@Deleteשאילתות ללא פרמטרים. b/63608092בדיקות קבועות של סוגי החדרים לאיתור משתמשים ומתקנים. b/63733651
1.0.0 אלפא 4 – 11 ביולי 2017
שינויים ב-API
נוספה שיטת נוחות חדשה (
runInTransaction()) ל-roomDatabase.השיטות
@Insert,@Deleteו-@Updateיכולים עכשיו לכלול פרמטרים מסוגי ישויות שונים. b/62682405
תיקוני באגים
תוקן הטיפול ב-
byte[]ב-@Daoשיטות. b/62460045בבדיקת ההעברה ב'חדר' נעשה עכשיו שימוש בהשוואה שאינה תלוית-רישיות. b/62875382
תוקנה ההגדרה של ProGuard לפריטי מידע שנוצרו בתהליך הפיתוח (Artifact) של מחזורי החיים. b/62113696
1.0.0 אלפא 3 - 15 ביוני 2017
שינויים ב-API
ב-
@OnLifecycleEventיש כרגע תמיכה רק בפרמטר אירוע אחד. זהו שינוי כהכנה לקבלת התמיכה ב-Java 8 כדי שנוכל לעבור אל וממשקים עם methods שמוגדרות כברירת מחדל בעתיד. בהקשר של השינוי הזה, רק ה-methods@OnLifecycleEvent(ON_ANY)עם הערות יכולות לקבל פרמטר שני מסוג מסוגEvent(הפרמטר הראשון הואLifecycleOwner). פרטים נוספים זמינים במסמכים בנושא מחזור חיים.הכיתות
LifecycleActivityו-LifecycleFragmentמועברות לפריט המידע שנוצר בתהליך הפיתוח (Artifact) שלandroid.arch.lifecycle:extensions.MigrateTestHelper מקבל את מכונת Instrumentation במקום
Context, כדי שתהיה אפשרות לקרוא את הסכימה מהנכסים לבדיקה וליצור מסד הנתונים בהקשר של האפליקציה.@Insert,@Deleteו-@Updateהערות ב-methods של@DAO, סוג הפרמטר יכול עכשיוIterable. b/62259820
תיקוני באגים
שיטות שבוטלו עם אירועים במחזור החיים לא נקראות יותר מספר פעמים.
מספר פרמטרים של
INמטופלים עכשיו כמו שצריך. b/62608681עכשיו למחלקות DAO מופשטות יכול להיות בנאי שמקבל את
@Databaseמכונה. b/38488747עכשיו יכולים להיות ל-
DAOמחלקות-על או ממשק-על עם פרמטרים של סוג. b/62103620
1.0.0 אלפא 2 - 2 ביוני 2017
שינויים ב-API
הקריאה החוזרת (callback) של INVALIDationTracker מקבלת עכשיו את רשימת שמות הטבלאות שהשתנו. (b/38468740)
הקטנתם את שטח ה-API של המחלקה SupportSQLiteDatabase. (b/38481640)
תיקוני באגים
- הגנה על קבצים למחזורי חיים. (b/62113696)
- אובדן נתונים באמצעות ממירי סוגים. (b/62100716)
- אפשר להחזיר
Long[]מ-@Insertשאילתות.
1.0.0 אלפא 1 – 17 במאי 2017
MinSDK: 14
עצות כלליות
ביצענו בדיקות רבות לפני ההשקה, אבל רכיבי הארכיטקטורה נמצאים כרגע בגרסת אלפא. אם אתם מפתחים אפליקציה בסביבת הייצור, חשוב לזכור שה-API ישתנה לפני הגרסה 1.0 ויכול להיות שה-API לא יהיה יציב לגמרי. אם לא מתאים לכם לנפות באגים בבעיות בספריות שבהן אתם משתמשים, מומלץ לנסות קודם את רכיבי הארכיטקטורה בפרויקטים צדדיים.
אנחנו לא ממליצים לכולם לבצע את ההעברה כבר היום. יהיה לנו מדריך להעברת נתונים (מיגרציה) לגרסת 1.0 של רכיבי הארכיטקטורה.
מגבלות ובעיות מוכרות
- מחזור החיים
Fragmentו-ActivityCompatבספריית התמיכה לא מטמיעים עדיין את הממשק שלLifecycleOwner. הם יהיו זמינים כשרכיבי הארכיטקטורה יגיעו לגרסה 1.0.0.