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()
עכשיו חוזר ליעד ההתחלה של תרשים הניווט כברירת מחדל, כך שיהיו תואמים ל-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
השתנה ל-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
תומכות עכשיו בסוגי החזרה של 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 היא עכשיו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/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
->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/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מחזור החיים מכיל עכשיו
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
- עכשיו 'חדר' מדפיס שגיאה בזמן הקומפילציה כשה-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.