ארכיון נתוני הגרסה של רכיבי הארכיטקטורה

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.
  • הועבר לשימוש בתלות של Room 1.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" לא יוקפצו יותר מאחור סטאק כשמשתמשים בו עם NavigationUI methods. b/120104424
  • עכשיו אפשר להגדיר חלופה ב-AppBarConfiguration OnNavigateUpListener מופע שייקרא כאשר navController.navigateUp() יחזור false. b/79993862 b/120690961

שינויי תוכנה שעלולים לגרום לכשלים

  • כשמשתמשים ב<argument> עם argType="reference", הניווט הופסק מנתחת את ההפניה, במקום זאת מספקת את מזהה המשאב הגולמי עצמו. b/111736515
  • onNavDestinationSelected() עכשיו חוזר ליעד ההתחלה של תרשים הניווט כברירת מחדל, כך שיהיו תואמים ל-methods setup. הוסף menuCategory="secondary" ל-MenuItem כדי לא להקפיץ את הערימה האחורית. aosp/852869
  • ל-methods fromBundle() של כיתות Args שנוצרו אין עכשיו ערך null Bundle במקום 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 השתנה ל-OnDestinationChangedListener b/118670572
  • עכשיו OnDestinationChangedListener מעביר גם את Bundle הארגומנטים aosp/837142
  • המאפיינים app:clearTask ו-app:launchDocument והמאפיינים שלהם שיטות הוסרו. משתמשים ב-app:popUpTo עם השורש של התרשים כדי להסיר את כל היעדים מהמקבץ האחורי. b/119628354
  • ActivityNavigator.Extras משתמש עכשיו בדפוס Builder ומוסיף את היכולת הגדרת דגלי Intent.FLAG_ACTIVITY_ aosp/828140
  • השם של NavController.onHandleDeepLink השתנה ל-handleDeepLink aosp/836063
  • הרבה מחלקות ושיטות שלא מיועדות למחלקות משניות, כמו NavOptions, NavInflater, NavDeepLinkBuilder וגם AppBarConfiguration, להפוך ל-final aosp/835681
  • השיטה NavHostFragment.setGraph() שהוצאה משימוש הוסרה aosp/835684
  • ה-method NavigationUI.navigateUp(DrawerLayout, NavController) שהוצאה משימוש הוסר. aosp/835684
  • יצירת המקטעים הועברה אל FragmentNavigator, כדי להקל על להעניק גישה ליצירת מקטעים לFragmentFactory. b/119054429
  • ה-constructor של 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 תומך באובייקטים שניתנים לשינוי טורי, כולל ערכי 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 עם הערך CANCELLED State במהלך ListenableWorker.onStopped().
  • יש להתייחס ל-null Result ככשלים ב-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.
  • ניסיון initialize WorkManager יותר מפעם אחת בכל תהליך יוביל מעכשיו ל-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.
  • ניסיון initialize WorkManager יותר מפעם אחת בכל תהליך יוביל מעכשיו ל-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 תומכות עכשיו בסוגי החזרה של Rx Completable, Single<T> ו-Maybe<T>. b/63317956
  • סוגים שאינם ניתנים לשינוי עם @Relation: בעבר היה צורך ב-@Relation שדות עם הערות כדי להגדיר חדר, אבל עכשיו הם יכולים להיות פרמטרים של constructor.
  • enableMultiInstanceInvalidation: זהו API חדש ב-RoomDatabase.Builder שמאפשר ביטול תוקף במספר מופעים של RoomDatabase באמצעות אותו קובץ מסד נתונים. המנגנון לביטול תוקף של כמה מכונות פועל גם במספר תהליכים. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: הוא API חדש ב-RoomDatabase.Builder שבעזרתו ניתן ליצור מחדש את מסד הנתונים באופן אוטומטי במקרה של שדרוג לאחור. b/110416954
  • ignoredColumns: מדובר ב-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.

תכונות חדשות

שינויים ב-API

  • שינוי תוכנה זדונית: שיטת Navigator navigate() מקבלת עכשיו פרמטר Navigator.Extras.
  • ה-method getGraph() של NavController היא עכשיו NonNull b/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 יהפוך ל-setDemoControllerIndex b/79995048
    • לדוגמה action_show_settings יהפוך ל-actionShowSettings b/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/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, שהוא שם המחלקה שמוגדר במלואו של 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/76031240

  • RoomDatabase.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 -> AsyncListDiffer
    • ListAdapterConfig -> AsyncDifferConfig
    • DiffCallback -> 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 ל-AsyncListDiffer
    • getItem(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.

  • שיטות ממשק עם הטמעות ברירת מחדל נתמכות עכשיו ב- @Transaction methods ב-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.0
  • android.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 החדש הזה מאפשר ל-@Dao methods לקבל את ה-SQL כפרמטר של שאילתה b/62103290, b/71458963
  • fallBackToDestructiveMigrationsFrom: ה-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.

תיקוני באגים

מועמד לגרסה – 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 ציבורי).
  • מחזורי חיים:

    • LiveData פועל בצורה תקינה כשהפעילות מכוסה באופן חלקי ב-API < 24. b/65665621

    • ל-methods OnLifecycleEvent בכיתות הורה קוראים עכשיו בצורה נכונה, או אם אי אפשר, תודפס אזהרה במהלך ההידור. b/63474615

    • מחזור החיים מכיל עכשיו WeakReference LifecycleOwner כדי למנוע הדלפה של 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

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:

  • חלוקה לדפים:

    • תיעוד משופר של הדפדוף עם עוד דוגמאות והערות בשרשור.

תיקוני באגים

  • חדר:
    • מחרוזות מרובות שורות של Kotlin בשיטות של @Query מטופלות כראוי. b/65809374
  • חלוקה לדפים:
    • פריט המידע שנוצר בתהליך הפיתוח (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

תיקוני באגים

1.0.0 אלפא 8 – 1 באוגוסט 2017

שינויים בהתנהגות

  • האילוץ NOT NULL נוסף לעמודות או לעמודות של פרימיטיביות עם הערות עם NonNull. הפעולה הזו משנה את המבנה של כך שאם אתם כבר משתמשים ברכיבי ארכיטקטורה אלפא 7 או גרסאות קודמות, צריך לבצע העברה אם רוצים לשמור את הנתונים, או להשתמש השיטה fallbackToDestructiveMigration() ב-builder. b/62007004

שינויים ב-API

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

כדי להוסיף תמיכה של 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

תיקוני באגים

  • הגנה על קבצים למחזורי חיים. (b/62113696)
  • אובדן נתונים באמצעות ממירי סוגים. (b/62100716)
  • אפשר להחזיר Long[] מ-@Insert שאילתות.

1.0.0 אלפא 1 – 17 במאי 2017

MinSDK: 14

עצות כלליות

  • ביצענו בדיקות רבות לפני ההשקה, אבל רכיבי הארכיטקטורה נמצאים כרגע בגרסת אלפא. אם אתם מפתחים אפליקציה בסביבת הייצור, חשוב לזכור שה-API ישתנה לפני הגרסה 1.0 ויכול להיות שה-API לא יהיה יציב לגמרי. אם לא מתאים לכם לנפות באגים בבעיות בספריות שבהן אתם משתמשים, מומלץ לנסות קודם את רכיבי הארכיטקטורה בפרויקטים צדדיים.

  • אנחנו לא ממליצים לכולם לבצע את ההעברה כבר היום. יהיה לנו מדריך להעברת נתונים (מיגרציה) לגרסת 1.0 של רכיבי הארכיטקטורה.

מגבלות ובעיות מוכרות