2019 年 1 月 15 日
WorkManager
WorkManager 1.0.0-beta02
發布。這個版本修正了一些錯誤。
修正錯誤
- 修正了週期性工作在搭載 Android 6.0 (API 級別 23) 的裝置上,可能會於每次間隔執行超過一次的極端案件。b/121998363
- 修正了搭載 Android 5.1 (API 級別 22) 以下版本的裝置上發生的
ConcurrentModificationException
。b/121345393 - 針對搭載 Android 5.1 (API 級別 22) 以下版本的裝置修正了未符合限制條件時的工作執行錯誤。b/122578012
- 最佳化工作完成處理方式,加快某些極端案件中的處理速度。b/122358129
- 新增了一項變更,解決 WorkManager 使用的多個
LiveData
例項間可能存在的競爭狀況。 - 改用
Room
依附元件1.1.1
,而非1.1.1-rc01
;這些版本完全相同。b/122578011
2018 年 12 月 19 日
WorkManager
WorkManager 1.0.0-beta01
發布。這個版本沒有任何 API 變更;往後,除非出現重大問題,否則 WorkManager 的 API 將保持穩定,直到推出下一個版本。這個版本修正了一些錯誤。
修正錯誤
- 先前遭取消的子項於父項工作成功完成後不會再執行。b/120811767
- 適當地初始化記錄類別 (主要顯示於測試期間)。
2018 年 12 月 18 日
Navigation
Navigation 1.0.0-alpha09
發布。這個版本包含破壞性的 API 變更;請參閱下方的「破壞性變更」一節。
我們決定不繼續開發 android.arch.navigation:navigation-testing
構件。雖然經證明這對 NavController
的內部測試有幫助,但我們強烈建議採用其他測試策略 (例如模擬 NavController
執行個體),以驗證目前進行的 navigate()
呼叫正確無誤。2018 年 Android 開發人員高峰會的單次活動講座 詳細討論了這種做法,而我們也會專門針對 Navigation 測試提供更多說明文件。
新功能
- 與
NavigationUI
搭配使用時,含有menuCategory="secondary"
的MenuItem
不會再彈出返回堆疊。b/120104424 AppBarConfiguration
現在可讓您設定備用的OnNavigateUpListener
執行個體,於navController.navigateUp()
傳回false
時進行呼叫。b/79993862 b/120690961
破壞性變更
- 將
<argument>
與argType="reference"
搭配使用時,Navigation 不會再剖析參照,改為提供原始資源 ID 本身。b/111736515 - 根據預設,
onNavDestinationSelected()
現在會彈回導覽圖的起始目的地,與setup
方法維持一致。為MenuItem
新增menuCategory="secondary"
,以免彈出返回堆疊。aosp/852869 - 產生的
Args
類別的fromBundle()
方法現在接受非空值的Bundle
,而非可為空值的Bundle
。aosp/845616
修正錯誤
- 引數現在可從深層連結正確剖析為正確的
argType
,而非一律剖析為字串。b/110273284 - Navigation 現在可正確匯出公開資源。b/121059552
- Safe Args 現在支援 Android Gradle 外掛程式 3.4 Canary 4 以上版本 b/119662045
2018 年 12 月 12 日
WorkManager
WorkManager 1.0.0-alpha13
發布。這個版本包含小幅 API 變更,對部分 Kotlin 使用者有所助益。
API 變更
androidx.work.Result
已移動成為ListenableWorker
的內部類別。這可防止重構程序與 Kotlin 的頂層Result
類別發生衝突。「這是一項破壞性的 API 變更。」b/120564418
破壞性 API 變更
androidx.work.Result
已移動成為ListenableWorker
的內部類別。
2018 年 12 月 6 日
Paging
Paging 2.1.0-rc01
發布,且自 2.1.0-beta01
版以來皆無異動。
Navigation
Navigation 1.0.0-alpha08
發布。這個版本包含破壞性的 API 變更;請參閱下方的「破壞性變更」一節。
新功能
- 目的地標籤現在搭配
NavigationUI
方法使用時,將自動使用正確的引數取代android:label
中的{argName}
執行個體 b/80267266 - Navigation 現在依附於支援資料庫 28.0.0。b/120293333
破壞性變更
OnNavigatedListener
已重新命名為OnDestinationChangedListener
。b/118670572OnDestinationChangedListener
現在也會傳遞引數的Bundle
。aosp/837142- 移除了
app:clearTask
和app:launchDocument
屬性及其相關方法。您可以將app:popUpTo
與圖形根層級搭配使用,來移除返回堆疊中的所有目的地。b/119628354 ActivityNavigator.Extras
現在採用Builder
模式,並加入可設定任何Intent.FLAG_ACTIVITY_
標記的功能。aosp/828140NavController.onHandleDeepLink
已重新命名為handleDeepLink
。aosp/836063- 許多不適用於設定子類別的類別和方法 (例如
NavOptions
、NavInflater
、NavDeepLinkBuilder
和AppBarConfiguration
) 皆已設為final
。aosp/835681 - 移除已淘汰的
NavHostFragment.setGraph()
方法。aosp/835684 - 移除已淘汰的
NavigationUI.navigateUp(DrawerLayout, NavController)
方法。aosp/835684 - Fragment 建立程序已移至
FragmentNavigator
,以便將 Fragment 建立程序委派給FragmentFactory
。b/119054429 NavGraphNavigator
的建構函式不再接受Context
。aosp/835340- NavigatorProvider 現已成為類別,不再是介面。
getNavigatorProvider()
傳回的NavigatorProvider
並未改變其功能。aosp/830660 - 已移除
NavDestination.navigate()
。請改為透過Navigator
呼叫navigate()
。aosp/830663 - 大幅重構
Navigator
,不再需要使用OnNavigatorNavigatedListener
,而是改為讓navigate
傳回原本的導覽目的地NavDestination
。 Navigator
執行個體無法再將彈出事件傳送至NavController
。建議您使用OnBackPressedCallback
來攔截返回按鈕點按動作,並呼叫navController.popBackStack()
。aosp/833716
修正錯誤
- 當目的地為
<navigation>
元素時,popUpTo
現在會穩定運作。b/116831650 - 修正因使用巢狀結構圖時發生
IllegalArgumentException
而導致的數個問題。 b/118713731 b/113611083 b/113346925 b/113305559 <activity>
目的地的dataPattern
屬性現在可為引數填入非 String 引數,方法是呼叫toString()
。b/120161365
Safe Args
- Secure Args 支援可序列化物件,包括 Enum 值。Enum 類型可以使用列舉常值來設定預設值,無須使用類別名稱 (例如
app:defaultValue="READ"
)。b/111316353 - 只要是 Safe Args 支援的類型,Safe Args 皆支援其陣列 b/111487504
- Safe Args 現在會忽略資源目錄的子資料夾 b/117893516
- Safe Args 會視情況新增
@Override
註解 b/117145301
2018 年 12 月 5 日
WorkManager
WorkManager 1.0.0-alpha12
發布。這個版本包含幾項破壞性的 API 變更;請參閱下方的「破壞性 API 變更」一節。這個版可能會成為我們發布的第一個 Beta 版。alpha12
也包含大量的說明文件更新。
API 變更
- 新構件
work-rxjava2
導入了RxWorker
。這是一個等待接收Single<Payload>
的ListenableWorker
。 - 移除了對 Firebase JobDispatcher 的支援,原因是該程式庫即將遭到淘汰。換句話說,隨著我們邁入 Beta 版,
work-firebase
構件將不再更新。我們日後會考慮增設替代選項。 - 將
Payload
合併至Result
。Result
現在是「密封類別」,內含三種具體實作,可透過Result.success()
(或Result.success(Data)
)、Result.failure()
(或Result.failure(Data)
) 和Result.retry()
取得。您的ListenableFuture
現在會產生Result
,而非Payload
。Worker
沒有輸出Data
的 getter 和 setter 方法。這是一項破壞性變更。 - 新增了
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
和Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
以及相應變體,為觸發速度較慢的內容 URI 提供更完善的支援。b/119919774 - 新增了
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
變體。這個方法必須使用 API 26。 - 新增了
Operation.await()
和ListenableFuture.await()
Kotlin 擴充功能方法。 Operation.getException()
已重新命名為Operation.getThrowable()
。這是一項破壞性變更。ContentUriTriggers
類別和其參照方法不再提供公共使用。這是一項破壞性變更。- 移除了
WorkManager
、WorkContinuation
和OneTimeWorkRequest
中的其餘變數引數方法,以簡化 API。如要修正任何版本問題,可以使用Arrays.asList(...)
包裝現有的變數引數。我們仍會納入每種方法的單一引數版本。這是一項破壞性變更。 - 移除
WorkContinuation.combine(OneTimeWorkRequest, *)
變數。這些變體提供的 API 較為複雜難懂;現有的combine
方法比較容易理解。這是一項破壞性變更。
修正錯誤
- Marchmallow 之前的實作版本現在能夠更穩定地從現行工作程序終止的狀況中恢復。
- 透過
observeForever
觀測到的LiveData
可使用 WorkManager 追蹤。這是將 Room 程式庫修正項目向後移植。b/74477406 - 如果序列化物件超出大小上限,
Data.Builder.build()
現在會擲回例外狀況。過去,這只會發生在背景執行緒,因此您無法做出適當處理。 - 進一步區分已停止與已取消的工作;
getWorkInfoById()
在ListenableWorker.onStopped()
期間會傳回具備CANCELLED
State
的WorkInfo
。 - 在
ListenableWorker
中將null
Result
視作失敗。b/120362353 - 對搭載 API 24 且不時擲回
IllegalArgumentException
的 Shield Tablets 做出推測性修正。b/119484416
破壞性 API 變更
- 移除了對 Firebase JobDispatcher 的支援,原因是該程式庫即將遭到淘汰。換句話說,隨著我們邁入 Beta 版,
work-firebase
構件將不再更新。我們日後會考慮增設替代選項。 - 將
Payload
合併至Result
。Result
現在是「密封類別」,內含三種具體實作,可透過Result.success()
(或Result.success(Data)
)、Result.failure()
(或Result.failure(Data)
) 和Result.retry()
取得。您的ListenableFuture
現在會產生Result
,而非Payload
。Worker
沒有輸出Data
的 getter 和 setter 方法。 - 新增了
Operation.await()
和ListenableFuture.await()
Kotlin 擴充功能方法。 Operation.getException()
已重新命名為Operation.getThrowable()
。ContentUriTriggers
類別和其參照方法不再提供公共使用。- 移除了
WorkManager
、WorkContinuation
和OneTimeWorkRequest
中的其餘變數引數方法,以簡化 API。如要修正任何版本問題,可以使用Arrays.asList(...)
包裝現有的變數引數。我們仍會納入每種方法的單一引數版本。 - 移除了
WorkContinuation.combine(OneTimeWorkRequest, *)
變體。這些變體提供的 API 較為複雜難懂;現有的combine
方法比較容易理解。
2018 年 12 月 4 日
Room
Room 2.1.0-alpha03
發布,提供協同程式支援並修正多項錯誤。
API 變更
@Fts3
/@Fts4
中的 FTStokenizer
現在接受 String,而非 Enum。這樣一來,Room 就能使用自訂權杖化工具。內建權杖化工具仍會透過FtsOptions
以字串常數定義。b/119234881
新功能
- 協同程式:DAO 方法現在可以是暫停函式。為了支援 Room 的暫停函式,我們推出了新構件
room-coroutines
。b/69474692 - 加上
@Insert
、@Delete
或@Update
註解的 DAO 方法現在支援ListenableFuture
做為傳回類型。b/119418331
修正錯誤
- 修正錯誤:Room 會在
@Entity
的ignoredColumns
屬性中嘗試尋找含有資料欄的建構函式。b/119830714 - 修正錯誤:Room 先前在所產生的實作項目中不會將 DAO 方法參數標示為最終參數,現在這個錯誤已經修正。b/118015483
- 修正錯誤:Room 處理工具先前針對含有特殊符號的查詢回報錯誤時會當機,現在這個錯誤已經修正。b/119520136
- 修正了 Room 會拒絕使用其他各種
Collection
實作項目做為IN
運算式引數的錯誤。b/119884035 - 修正了 Room 傳回的 LiveData 在有觀測活動時會遭到垃圾收集處理而再也無法發出新資料的錯誤。b/74477406
- 更新了
RoomDatabase
的鎖定機制,以減少鎖定動作爭用情形。b/117900450
2018 年 11 月 8 日
WorkManager
WorkManager 1.0.0-alpha11
發布。這個版本包含的多項變更將在 beta
成為穩定的 API。
這個版本中有破壞性的 API 變更;請參閱下方的「破壞性 API 變更」一節。
API 變更
work-runtime-ktx
推出新的CoroutineWorker
。WorkStatus
已重新命名為WorkInfo
。所有相應的getStatus
方法變體也已重新命名為對應的getWorkInfo
變體。這是一項破壞性變更。ListenableWorker.onStopped()
不再接受用來指出WorkRequest
是否已取消的布林引數。這項資訊在WorkManager
中已無區別。這是一項破壞性變更。androidx.work.test
套件已重新命名為androidx.work.testing
套件。這是一項破壞性變更。Constraints
的 setter 不再是公用 API 的一部分。這是一項破壞性變更。WorkerParameters.getTriggeredContentUris()
和WorkerParameters.getTriggeredContentAuthorities()
先前會傳回陣列,現在則會傳回集合。這是一項破壞性變更。ListenableWorker.onStartWork()
已重新命名為ListenableWorker.startWork()
。這是一項破壞性變更。WorkStatus
的建構函式不再是公用 API 的一部分。這是一項破壞性變更。Configuration.getMaxJobSchedulerID()
和Configuration.getMinJobSchedulerID()
已分別重新命名為Configuration.getMinJobSchedulerId()
和Configuration.getMaxJobSchedulerId()
。這是一項破壞性變更。- 在公用 API 中新增了大量
@NonNull
註解,讓 API 更貼近需求。 - 新增
WorkManager.enqueueUniqueWork()
API,這樣不必建立WorkContinuation
,就能將不重複的OneTimeWorkRequest
加入佇列。 - 在
WorkManager
中,enqueue
和cancel
方法的所有變體現在會傳回新的Operation
類型。這是一項破壞性變更。 enqueue
的所有變體皆不再接受WorkRequest
的變數引數。這是一項破壞性變更。請改用 Collections。您可以使用Arrays.asList()
修改現有程式碼。這項變更是為了減少 API 介面和方法的計數。- 現在如果在每個程序中嘗試
initialize
WorkManager
超過一次,就會產生IllegalStateException
。這是一項破壞性變更。
修正錯誤
work-runtime-ktx
構件中的WorkRequest.Builder
現在會使用ListenableWorker
。修正 b/117666259- 確保
PeriodicWork
的下次執行時間設在未來。修正 b/118204399 - 移除在應用程式啟動時使用 WorkManager 而可能導致的磁碟 I/O。修正 b/117796731
- 修正
WorkConstraintsTracker
中的競爭狀況。修正 android-workmanager/issues/56
破壞性 API 變更
WorkStatus
已重新命名為WorkInfo
。所有相應的getStatus
方法變體也已重新命名為對應的getWorkInfo
變體。ListenableWorker.onStopped()
不再接受用來指出WorkRequest
是否已取消的布林引數。這項資訊在WorkManager
中已無區別。androidx.work.test
套件已重新命名為androidx.work.testing
套件。Constraints
的 setter 不再是公用 API 的一部分。WorkerParameters.getTriggeredContentUris()
和WorkerParameters.getTriggeredContentAuthorities()
先前會傳回陣列,現在則會傳回集合。ListenableWorker.onStartWork()
已重新命名為ListenableWorker.startWork()
。WorkStatus
的建構函式不再是公用 API 的一部分。Configuration.getMaxJobSchedulerID()
和Configuration.getMinJobSchedulerID()
已分別重新命名為Configuration.getMinJobSchedulerId()
和Configuration.getMaxJobSchedulerId()
。- 在
WorkManager
中,enqueue
和cancel
方法的所有變體現在會傳回新的Operation
類型。 enqueue
的所有變體皆不再接受WorkRequest
的變數引數。- 現在如果在每個程序中嘗試
initialize
WorkManager
超過一次,就會產生IllegalStateException
。
2018 年 11 月 1 日
Paging
Paging 2.1.0-beta01
發布,且自 2.1.0-alpha01
版以來皆無異動。
2018 年 10 月 30 日
Room
Room 2.1.0-alpha02
發布,修正多項錯誤並推出一項新功能。
新功能
- 開始支援在
@Relation
中參照@DatabaseView
。b/117680932
修正錯誤
- 修正了從 Rx 傳回類型進行訂閱與棄置時,Room 會在主執行緒中執行磁碟 I/O 的錯誤。b/117201279
- 修正了 Room 無法為 Kotlin 實體類別中的欄位找到適當類型轉換工具的錯誤。b/111404868
- 修正了當
DAO
介面實作包含的 Kotlin 預設方法沒有引數時,Room 會產生錯誤程式碼的問題。b/117527454 - 更新了 Room 的 SQLite 文法剖析器,修正導致建構時間過長的效能問題。b/117401230
2018 年 10 月 29 日
Navigation
Navigation 1.0.0-alpha07
發布,修正多項錯誤並推出 API 變更。
新功能
- 全新的 AppBarConfiguration 類別可讓您自訂要列為「頂層」的目的地。詳情請參閱更新版說明文件。b/117333663
- 您現在可以將引數傳遞至圖形的起始目的地。 b/110300470
- 深層連結現在支援含有半形句號、連字號和加號的自訂配置。b/112806402
破壞性變更
navigation-testing-ktx
模組已收入navigation-testing artifact
,因此無法再發布。navigation-testing
構件現在依附於 Kotlin 標準程式庫。API 經變更後更符合 Kotlin 使用慣例,但您可以繼續使用該 API 執行以 Java 編寫的測試。- 不再支援中繼資料資訊清單註冊導覽圖。b/118355937
- 無法再將動作附加至 <activity> 目的地。aosp/785539
修正錯誤
- 深層連結現在可正確地剖析查詢參數。b/110057514
- Activity 目的地現在可正確地套用所有進入與退出的動畫。b/117145284
- 修正了使用自訂 Navigator 時因設定變更而發生的異常終止問題。b/110763345
Safe Args
- Safe Args 現在可以固定依附於 Android Gradle 外掛程式 3.2.1。b/113167627
- 現在可以為內部類別產生 Directions。b/117407555
- 修正了無法順利產生 Directions 並加到 <include> 導覽圖的問題。b/116542123
2018 年 10 月 12 日
Paging
Paging 2.1.0-alpha01
發布,內含兩大新增項目,分別為網頁捨棄功能以及每個構件的 KTX 擴充功能程式庫,另外還有幾項 API 變更和錯誤修正項目。
API 變更
- 新增了
PagedList.Config.Builder.setMaxSize()
,用於限制記憶體中的已載入項目數量。 - 新增了
androidx.paging.Config()
,做為PagedList.Config.Builder
的 Kotlin 替代方案。 - 新增了
androidx.paging.PagedList()
,做為PagedList.Builder
的 Kotlin 替代方案。 - 新增了
DataSourceFactory.toLiveData()
,做為LivePagedListBuilder
的 Kotlin 替代方案。 - 新增了
DataSourceFactory.toObservable()
和toFlowable()
,做為RxPagedListBuilder
的 Kotlin 替代方案。 - 新增了
AsyncPagedListDiffer.addPagedListListener()
,用於監聽 PagedList 遭到更換的情況。b/111698609 - 新增了可傳遞新舊清單的
PagedListAdapter.onCurrentListChanged()
變體,淘汰了先前的變體。 - 新增了
PagedListAdapter/AsyncPagedListDiffer.submitList()
變體,該變體可接受另一個在差異比較完成後,因顯示 PagedList 而觸發的回呼。這樣一來,您就可以將 PagedList 更換活動與其他 UI 更新項目同步處理。b/73781068 - 新增了
PagedList.getLoadedCount()
,用於指出記憶體中的項目數量。請注意,如果停用了預留位置,傳回的值一律會等於.size()
。
修正錯誤
- 修正了當清單重複使用時,差異比較作業中發生的競爭狀況。b/111591017
- 現在如果索引無效,
PagedList.loadAround()
會擲回IndexOutOfBoundsException
。先前,這可能會異常終止並擲回其他不明確的例外狀況。 - 修正問題:在初始載入大小極小且資料不變的情況下,系統無法進一步載入 b/113122599
2018 年 10 月 11 日
WorkManager
WorkManager 1.0.0-alpha10
發布,支援由開發人員控制的非同步工作。這個版本中有破壞性的 API 變更;請參閱下方的「破壞性 API 變更」一節。
我們預期 WorkManager 將進入 Alpha 測試期的最後階段,並在 Beta 版中達到 API 穩定狀態,因此請抽空透過我們的 Issue Tracker 提供意見回饋。
API 變更
- 移除先前所有
deprecated
方法和類別,特別是預設的Worker
建構函式。這是一項破壞性的 API 變更。 - 將
NonBlockingWorker
重新命名為ListenableWorker
,現為未隱藏的公開類別並已開放使用。ListenableWorker
可讓您存取一種抽象的方法ListenableFuture<Payload> onStartWork()
,只要透過主執行緒呼叫即可。您可以選擇採非同步形式啟動與處理工作。完成後,請視情況更新ListenableFuture
。alpha02
中的Futures
套件會提供ListenableFuture
的參考實作 (請見下方的WorkManager
部分)。Worker
採用抽象的Result doWork()
方法,可擴充ListenableWorker
並如往常一樣運作。- 將部分方法和成員從
Worker
重組至ListenableWorker
。 - 針對使用 Kotlin 協同程式 (在穩定版發布後) 和 RxJava2 的
ListenableWorker
,我們會盡快提供參考實作。
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
檔案重複問題。如要移除先前版本資訊中提供的解決方法,可以從 Gradle 檔案中刪除exclude 'META-INF/proguard/androidx-annotations.pro'
。 - 新增了 ProGuard 設定,以保留新的
Worker
建構函式。b/116296569 - 修正競爭狀況在工作經過
REPLACE
處理後可能發生的NullPointerException
。b/116253486 和 b/116677275 WorkContinuation.combine()
現在接受一個以上 (而非兩個以上) 的WorkContinuation
。b/117266752
破壞性 API 變更
- 移除先前所有
deprecated
方法和類別,特別是預設的Worker
建構函式。 WorkerFactory
介面和DefaultWorkerFactory
具體實作已併入抽象類別WorkerFactory
。- 移除了
WorkManager.synchronous()
和WorkContinuation.synchronous()
。 WorkManager.getStatus*()
方法現在會傳回ListenableFuture
。WorkManager.getStatus*LiveData()
則會傳回LiveData
。
Futures
Futures 1.0.0-alpha02
發布。
API 變更
- 開發人員現在可以使用
ResolvableFuture
和AbstractResolvableFuture
,做為ListenableFuture
的輕量具體實作。
2018 年 10 月 8 日
Room
Room 2.1.0-alpha01
發布。
新功能
- FTS:Room 現在支援具備 FTS3 或 FTS4 對應資料表的實體。使用
@Entity
註解的類別現在可以另外加上@Fts3
或@Fts4
註解,以宣告含有對應全文搜尋資料表的類別。您可以透過註解的方法存取 FTS 的進階自訂選項。b/62356416 - 檢視畫面:Room 現在支援使用 @DatabaseView 註解,將類別宣告為已儲存的查詢,也稱為檢視畫面。b/67033276
- 自動值:Room 現在支援將包含 AutoValue 註解的類別宣告為實體和 POJO。您現在可以透過自動值註解類別的抽象方法宣告
@PrimaryKey
、@ColumnInfo
、@Embedded
和@Relation
這些 Room 註解。請注意,這些註解也必須附上@CopyAnnotations
,這樣 Room 才能正確解讀註解。b/62408420 - 其他 Rx 傳回類型支援:包含
@Insert
、@Delete
或@Update
註解的 DAO 方法現在支援 Rx 傳回類型Completable
、Single<T>
和Maybe<T>
。b/63317956 - 包含
@Relation
的不可變動類型:Room 先前要求@Relation
註解欄位必須可供設定,但現在可以是建構函式參數。 enableMultiInstanceInvalidation
是RoomDatabase.Builder
中的新 API,可讓多個使用同一資料庫檔案的 RoomDatabase 執行個體失效。這項多執行個體撤銷機制也適用於多個程序。b/62334005fallbackToDestructiveMigrationOnDowngrade
:這是RoomDatabase.Builder
中的新 API,可在發生降級時自動重新建立資料庫。b/110416954ignoredColumns
:這是@Entity
註解中的新 API,可依名稱列出遭忽略的欄位。適合用於忽略特定實體的沿用欄位。b/63522075
API/行為變更
RoomDatabase
中的mCallback
和mDatabase
現已淘汰 (@Deprecated
),並將在下一個 Room 的主要版本中移除。b/76109329
修正錯誤
- 修正了 Room 在初始化期間無法正確地從資料庫毀損或遷移無效錯誤中復原的兩個問題。b/111504749 和 b/111519144
- Room 現在會在資料類別中正確使用 Kotlin 的主要建構函式,而不必將這些欄位宣告為
vars
。b/105769985
2018 年 10 月 1 日
Room 2.0.0
發布,且自 2.0.0-rc01
版以來皆無異動。Paging 2.0.0
發布,修正一項錯誤。
Paging
修正錯誤
- 修正了使用
PositionalDataSource
和預留位置進行極快速捲動時可能發生的異常終止問題 b/114635383
2018 年 9 月 21 日
Lifecycle 2.0.0
發布,修正 ViewModel 中 2.0.0-rc01
的一項錯誤。
Lifecycle
修正錯誤
- 修正了錯誤移除建構函式的 ViewModel ProGuard 規則 b/112230489
2018 年 9 月 20 日
Navigation
Navigation 1.0.0-alpha06
發布,修正多項錯誤並推出 API 變更。
新功能
- 現在支援 Fragment 和 Activity 目的地的共用元素轉換 b/79665225。詳情請參閱「使用導覽架構元件實作導覽功能」。
- 現在如果選取
NavigationView
中的某個項目,其所屬的所有底部功能表都會關閉 b/112158843
API 變更
- 破壞性變更:Navigator
navigate()
方法現在接受Navigator.Extras
參數。 - NavController 的
getGraph()
方法現在為NonNull
。b/112243286
修正錯誤
NavigationUI.setupWithNavController()
與個別目的地的檢視搭配使用時,不會再洩露檢視內容 b/111961977- 系統現在只會呼叫 Navigator
onSaveState()
一次 b/112627079
Safe Args
- 導覽目的地的 Directions 類別現在會擴充其父項 Directions 類別 (如果有的話)。b/79871405
- Directions 和 Args 類別現在具備實用的
toString()
實作 b/111843389
2018 年 9 月 19 日
WorkManager
WorkManager 1.0.0-alpha09
發布,修正多項錯誤、更新基礎架構並推出 API 變更。
已知問題
如果您遇到以下問題:「找到多個檔案採用獨立於 OS 的路徑『META-INF/proguard/androidx-annotations.pro』」,請在 Gradle 檔案中加入下方內容,做為暫時性解決方案;我們將在 alpha10 中修正這個問題:
Groovy
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 - 針對 Firebase JobDispatcher 強制採用正確的最短輪詢延遲時間。b/113304626
- 改善了程式庫內部的執行緒保證。
- 修正在內部刪除重複的
LiveData
時可能發生的問題。
API 變更
- 您現在可以在執行階段建立自己的
Worker
例項,方法是在WorkManager.Configuration
中指定WorkerFactory
。備用工廠函式為DefaultWorkerFactory
,與舊版 WorkManager 的行為相符。Worker
和NonBlockingWorker
的預設建構函式現已標示為已淘汰。請使用新的建構函式 (Worker(Context, WorkerParameters)
) 並呼叫super(Context, WorkerParameters)
;日後推出的 WorkManager 版本將移除該預設建構函式。
- 我們已開始在內部使用新的
ListenableFuture
構件 (不含 Guava 依附元件),並且將在日後推出的 API 版本中導入 ListenableFutures。這項變更將推動在最終取消隱藏NonBlockingWorker
。 - 新增透過
TestDriver.setInitialDelayMet(UUID)
和TestDriver.setPeriodDelayMet(UUID)
在TestDriver
中觸發定時工作的功能。b/113360060
破壞性變更
- 淘汰了預設的
Worker
和NonBlockingWorker
建構函式。請盡快遷移至新的建構函式。日後推出的版本將移除該預設建構函式。
2018 年 8 月 27 日
WorkManager
WorkManager 1.0.0-alpha08
發布,修正多項錯誤。
修正錯誤
- 將 WorkManager 元件明確標示為不具備直接啟動感知特性,以免這些元件在直接啟動期間觸發。日後,我們將提供具有直接啟動感知特性的 WorkManager 版本。b/112665532
- 修正了重試的工作無法執行的問題。b/112604021
- 修正了週期性工作無法重複執行的問題 (與上述問題相關)。b/112859683
- 在應用程式程序已開始執行時遵守輪詢政策。
- 修正了
Data
中顯示的例外狀況訊息,指出上限為 10 KB。 - 將
Configuration.setMaxSchedulerLimit(int)
的上限值下修至 50,以因應JobScheduler
在完成過程中的一些延遲。b/112817355
2018 年 8 月 16 日
WorkManager
WorkManager 1.0.0-alpha07
發布,修正多項錯誤並推出小幅 API 變更。
修正錯誤
- 修正了在 SQL 查詢中可使用負數限制的問題,這類查詢可能會傳回無限量的結果。
- 已完成執行的工作現在會正確地取消其在其他排程器中的所有待處理副本。原本這些副本會導致
JobScheduler
工作數量超出上限。b/111569265 - 修正了
ConstraintTracker
中發生的ConcurrentModificationException
。b/112272753 - 將
Data.getBooleanArray(String)
和Data.getIntArray(String)
的傳回類型註解變更為@Nullable
,而非@NonNull
。b/112275229
API 變更
Worker
現在擴充了一個新類別NonBlockingWorker
。這不會影響目前使用情形。日後,NonBlockingWorker
將成為 API 全面支援的實體,適用於自訂執行緒解決方案。- 將
Data.getBooleanArray(String)
和Data.getIntArray(String)
的傳回類型註解變更為@Nullable
,而非@NonNull
。b/112275229 - Kotlin 擴充功能:淘汰了
Map.toWorkData()
並新增了頂層workDataOf(vararg Pair<String, Any?>)
,以提高與現有 API 的一致性。
2018 年 8 月 10 日
Navigation
Navigation 1.0.0-alpha05
發布,修正多項錯誤。
修正錯誤
- 修正導致返回堆疊行為不正確的錯誤。b/111907708
- 修正所產生的 Args 類別在
equals()
中的錯誤。b/111450897 - 修正 Safe Args 中的建構失敗問題。B/109409713
- 修正將資源 ID 轉換成 Java 名稱時發生的問題。b/111602491
- 修正 Safe Args 外掛程式中針對是否可為空值顯示的錯誤訊息。
- 新增原本遺漏的是否可為空值註解。
2018 年 8 月 6 日
AndroidX 版的 Lifecycle、Room 和 Paging 發布 2.0.0-rc01
版本。所有構件皆與 2.0.0-beta01
相同。
2018 年 8 月 1 日
WorkManager
WorkManager 1.0.0-alpha06
發布,修正多項錯誤。
修正錯誤
- 防止資料庫在安排工作時間時遭到鎖定。b/111801342
- 修正在打盹模式中導致
PeriodicWork
無法依時間表執行的錯誤。b/111469837 - 修正在追蹤限制時的競爭狀況,以避免
WorkManager
異常終止。googlecodelabs/android-workmanager/issues/56 - 使用
WorkRequest.Builder#build()
時可建立專屬的WorkRequest
。b/111408337 - 只在
WorkRequest
有需要時才啟用RescheduleReceiver
。b/111765853
2018 年 7 月 24 日
WorkManager
WorkManager 1.0.0-alpha05
發布,做出重要錯誤修正與記錄變更。
API 變更
WorkManager.getInstance()
現在加上的註解為@NonNull
,而非@Nullable
。如果採用手動初始化,而單例模式未正確地初始化,該方法將擲回IllegalStateException
。這是一項破壞性的 API 變更。- 新增了
Configuration.Builder.setMinimumLoggingLevel(int)
這個新的 API,可控管 WorkManager 詳細程度。根據預設,WorkManager 會記錄Log.INFO
以上級別的資訊。 - 變更了
Data.getString()
的簽名,使其不再接受預設值 (默示為null
)。這是一項破壞性的 API 變更。 - 將部分只有內部需要使用的方法標示為
@hide
。這包括Constraints
建構函式、Data.toByteArray()
和Data.fromByteArray(byte[])
。這是一項破壞性的 API 變更。
修正錯誤
- 針對已知的自動備份情況,WorkManager 不會再執行工作,否則可能會導致異常終止。b/110564377
- 修正了使用
JobScheduler
時發生的PeriodicWorkRequest
重複排程問題。b/110798652 - 修正了
PeriodicWorkRequest
在裝置進入打盹狀態後無法正確執行的問題。b/111469837 - 修正了使用 Firebase JobDispatcher 時發生的初始延遲問題。b/111141023
- 修正了部分的潛在競爭狀況和時機問題。
- 正確地釋出了不再需要的
BroadcastReceiver
。 - 針對遭到強制關閉並重新啟動的應用程式,盡量提高重新排程成效。
- 允許在指定的
WorkRequest
之前或之後呼叫TestScheduler.setAllConstraintsMet(UUID)
。b/111238024
破壞性變更
WorkManager.getInstance()
現在加上的註解為@NonNull
,而非@Nullable
。- 變更了
Data.getString()
的簽名,使其不再接受預設值 (默示為null
)。 - 將部分只有內部需要使用的方法標示為
@hide
。這包括Constraints
建構函式、Data.toByteArray()
和Data.fromByteArray(byte[])
。
2018 年 7 月 19 日
Navigation
Navigation 1.0.0-alpha04
和相關聯的 Safe Args Gradle 外掛程式包含多項 API 變更、行為變更和錯誤修正。
API/行為變更
- NavHostFragment 一律會將目前的 Fragment 設為主要導覽片段,以確保先彈出子項片段管理員,再彈出外部的 NavController。b/111345778
Safe Args
- 破壞性變更:
app:type
已變更為app:argType
,以免與 ConstraintLayout 2.0.0-alpha1 等其他程式庫發生衝突。b/111110548 - Safe Args 顯示的錯誤訊息現在可供點選。b/111534438
- Args 類別現在會確認
NonNull
屬性實際並非空值 b/111451769 - 為 NavDirections 和 Args 所產生的類別新增
NonNull
註解。b/111455455 b/111455456
修正錯誤
- 修正了透過深層連結連往片段目的地後發生的系統返回按鈕問題 b/111515685
2018 年 7 月 12 日
Navigation
Navigation 1.0.0-alpha03
和相關聯的 Safe Args Gradle 外掛程式包含多項 API 變更、行為變更和錯誤修正。
API/行為變更
- 新增了工具列適用的 NavigationUI.setupWithNavController 方法 b/109868820
- 新增了 CollapsingToolbarLayout 適用的 NavigationUI.setupWithNavController 方法 b/110887183
- 現在,如果返回堆疊為空白或指定目的地 ID 不在返回堆疊中,popBackStack() 會傳回 false。b/110893637
- 現在,FragmentNavigator 在 FragmentManager 儲存狀態後會忽略導覽作業,以避免「無法在 onSaveInstanceState 之後執行這項動作」例外狀況 b/110987825
Safe Args
- 破壞性變更:如果動作和引數名稱包含非英數字元,在各自的 NavDirections 方法名稱中將改用駝峰式大小寫
- 例如:
DemoController.index
會變成setDemoControllerIndex
b/79995048 - 例如:
action_show_settings
會變成actionShowSettings
b/79642240
- 例如:
- 破壞性變更:現在系統預設會將引數視為非空值。想讓字串和可剖析引數使用空值,請新增
app:nullable="true"
b/79642307 - 您現在能夠以「123L」的格式將
app:type="long"
與 defaultValue 搭配使用。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
值都是以 String 形式傳遞的問題。b/110710788 - Android Gradle 外掛程式 3.2 Beta 01 版隨附的 aapt2 現在會為 Navigation XML 檔案中的每個
android:name
屬性新增保留規則。b/79874119 - 修正了在取代預設 FragmentNavigator 時發生的記憶體流失問題 b/110900142
2018 年 7 月 2 日
AndroidX 版的 Lifecycle、Room 和 Paging 發布 2.0.0-beta01
版本。
Lifecycle
修正錯誤
- 修正了 LifecycleObserver ProGuard 規則,僅保留實作項目,不保留子介面 (b/71389427)
- 修正了 ViewModel ProGuard 規則,以允許模糊處理與縮小操作
Room
API/行為變更
- 新增了
RoomDatabase.Builder.setQueryExecutor()
,以便自訂查詢執行位置 - 新增了 RxJava2
Observable
支援 - 原先產生的 DAO 和資料庫實作現已定案
修正錯誤
- 指定「cannot find getter for field」(找不到欄位的 getter) 錯誤訊息中的類別/欄位名稱 b/73334503
- 修正了 RoomOpenHelper 與 Room 較舊版本的回溯相容性問題 b/110197391
Paging
修正錯誤
- 修正原本在某些情況下 (預留位置已停用,PositionalDataSource) 內容會消失的問題 b/80149146
- (已在
1.0.1
中發布) 修正了PagedListAdapter
和AsyncPagedListDiffer
無法發出移動事件信號的異常終止問題 b/110711937
2018 年 6 月 26 日
Paging
Paging 1.0.1
發布,修正 runtime
中的一項錯誤。我們強烈建議您使用 1.0.1
以確保穩定性。Paging RxJava2 1.0.1
也同時推出,它與 1.0.0-rc1
完全相同。
修正錯誤
- 修正了
PagedListAdapter
和AsyncPagedListDiffer
無法發出移動事件信號的異常終止問題。b/110711937
WorkManager
WorkManager 1.0.0-alpha04
發布。
修正錯誤
現在當
PeriodicWorkRequest
使用以AlarmManager
為基礎的實作時,能夠正確地重新排程。修正在強制停止或重新啟動後,為所有工作站重新排程時可能發生的 ANR 問題。b/110507716
為各個 WorkManager API 新增了是否可為空值註解。b/110344065
記錄在工作站執行期間所發生卻未偵測到的例外狀況。b/109900862
允許遷移破壞性資料庫,以防您日後決定復原至舊版 WorkManager。b/74633270
修正了因建立重複的隱式標記而導致的遷移異常終止問題。這種問題十分罕見,只有在您本身使用相同的隱式標記格式時才會發生。
2018 年 6 月 19 日
Room
Room 1.1.1
發布。這個版本與 Room 1.1.1-rc1
完全相同。
WorkManager
WorkManager 1.0.0-alpha03
發布。
修正錯誤
修正
AlarmManager
型實作方式中的競爭狀況。b/80346526。修正了在裝置重新啟動後使用
JobScheduler
時工作重複的問題。具備內容 URI 觸發條件的工作現在於重新啟動後仍會保留。b/80234744
說明文件更新。b/109827628、b/109758949、b/80230748
修正將
WorkRequest
重新加入佇列時發生的異常終止問題。b/109572353。修正了使用
work-runtime-ktx
依附元件時顯示的 Kotlin 編譯器警告。WorkManager 現在採用
Room
1.1.1-rc1
版。
API 變更
新增了
WorkContinuation.getStatuses()
同步版getStatusesSync()
。Worker
能夠區別由使用者啟動的取消操作以及由 OS 要求的暫時性停止操作。如果收到任何種類的停止要求,Worker.isStopped()
將傳回true
。如果工作明確遭到取消,Worker.isCancelled()
將傳回true
。b/79632247針對 API 28 新增了 JobParameters#getNetwork() 支援。這會透過
Worker.getNetwork()
顯示。新增了
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
,方便您強制規定可傳送到JobScheduler
或AlarmManager
的工作數量。這有助於防止WorkManager
佔用所有可用的JobScheduler
運算單元。新增了
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
,以協助定義可供WorkManager
安全使用的JobScheduler
工作 ID 範圍。b/79996760Worker.getRunAttemptCount()
會傳回特定Worker
目前的執行作業計數。b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
可讓您將不重複的PeriodicWorkRequest
加入佇列。b/79600647WorkManager.cancelAllWork()
會取消所有Worker
。依附於WorkManager
的程式庫可以使用WorkManager.getLastCancelAllTimeMillis()
查詢上次呼叫這個方法的時間,以便對內部狀態進行進一步清理。新增了
WorkManager.pruneWork()
,以便將已完成的工作從內部資料庫中移除。b/79950952、b/109710758
行為變更
- 為所有
WorkRequest
新增了隱式標記,也就是Worker
的完整類別名稱。這樣一來,即使沒有tag
或無法使用id
,也能移除WorkRequest
。b/109572351
破壞性變更
Worker.WorkerResult
已重新命名為Worker.Result
。Worker.onStopped
現在增設了isCancelled
參數,該參數在Worker
明確遭到取消時會設為true
。
2018 年 6 月 7 日
Navigation 1.0.0-alpha02
發布。
Navigation
行為變更
FragmentNavigator
現在採用setReorderingAllowed(true)
。b/109826220Navigation 現在會對從深層連結網址剖析出的參數進行 URLDecode 處理。b/79982454
修正錯誤
修正了在透過 Fragment 生命週期方法呼叫 navigate 時發生的
IllegalStateException
。b/79632233為修正使用動畫時的閃爍問題,Navigation 現在依附於支援資料庫 27.1.1。b/80160903
修正在使用 defaultNavHost="true" 做為子項片段時發生的
IllegalArgumentException
。b/79656847修正了在使用 NavDeepLinkBuilder 時發生的
StackOverflowError
。b/109653065修正在導覽回巢狀結構圖時發生的
IllegalArgumentException
。b/80453447修正使用
launchSingleTop
時的 Fragment 重疊問題。b/79407969Navigation 現在會為巢狀圖建構正確的合成返回堆疊。b/79734195
現在使用巢狀結構圖做為
MenuItem
時,NavigationUI 會醒目顯示正確的項目。b/109675998
API 變更
淘汰了動作的
clearTask
屬性和NavOptions
中相關聯的 API。b/80338878淘汰了動作的
launchDocument
屬性和NavOptions
中相關聯的 API。b/109806636
2018 年 5 月 24 日
WorkManager 1.0.0-alpha02
發布。
WorkManager
修正錯誤
修正了
State.isFinished()
的NullPointerException
。b/79550068修正了導致
Worker
在Application.onCreate()
時重新排程的問題。b/79660657修正了排程工作數量可超出 OS 規定上限的問題。b/79497378
將與
Worker
相關聯的 Wake Lock 清理作業移至背景執行緒。現在當所有待處理工作完成時,
AlarmManager
實作會正確地進行清理。修正了對非英文使用地區造成影響的清理 SQL 查詢。b/80065360
在
Data
中新增了的float
支援。b/79443878Data.Builder.putAll()
現在會傳回Builder
的例項。b/79699162在說明文件中提供更多 Javadoc 和修正項目。b/79691663
API 變更
Worker
可對中止處置做出回應。Worker.isStopped()
可用於檢查Worker
是否已遭中止,Worker.onStopped()
則可用於執行輕量清理作業。Worker.getTags()
API 會傳回與Worker
相關聯的標記Set
。為 API 新增了
javax.time.Duration
多載,可接受時間長度和TimeUnit
的組合。這受到@RequiresApi(26)
的防護。WorkManager
擴充功能已從androidx.work.ktx
套件移至androidx.work
套件。已淘汰舊的擴充功能,且將在日後推出的版本中移除。淘汰了
Configuration.withExecutor()
,請改用Configuration.setExecutor()
。
2018 年 5 月 16 日
Paging RxJava2 1.0.0-rc1
和 Room 1.1.1-rc1
發布。如果您採用遷移功能,強烈建議您使用 Room 1.1.1-rc1
,而不要使用 1.1.0
。
Room
修正了 Room 無法正確地處理遷移後初始化作業的問題 b/79362399
Paging
Paging rxjava2
將移至候選版,且自初始的 Alpha 版以來皆無異動。
2018 年 5 月 8 日
Paging 1.0、Navigation 和 WorkManager Alpha 版、Room 1.1、AndroidX
Paging 1.0.0
和 Room 1.1.0
發布,同時推出 Navigation 和 WorkManager 這兩種新架構元件的 Alpha 版。
Paging 和 Room 自最新候選版以來皆無異動。
新程式庫:Navigation
Navigation 提供一個架構,可用於建構應用程式內導覽功能。初始版本為 1.0.0-alpha01
。
新程式庫:WorkManager
WorkManager 能夠為受到保證、可感知限制的背景工作簡化排程與執行作業。初始版本為 1.0.0-alpha01
。
AndroidX
架構元件即將遷移成為 AndroidX 的一部分,包括更新的套件名稱、構件名稱和其他 AndroidX 程式庫的依附元件。這些版本會在 2.0.0-alpha1
中發布,以便與其他項目搭配使用
AndroidX 程式庫。
Kotlin 擴充功能
ViewModel、ReactiveStreams 和 Sqlite (原為 Room 的「Database」元件) 都在 Android Alpha 版本中加入了 Kotlin 擴充功能程式庫。此外,Navigation 和 WorkManager 也包含 -ktx 模組。您可以在新增元件中找到這些擴充功能模組。
2018 年 5 月 2 日
- Room 1.1.0 候選版
- Room
1.1.0-rc1
發布。
修正錯誤
- Room 現在支援 Kotlin
1.2.40
。b/78328708
2018 年 4 月 19 日
Paging 候選版
Paging 1.0.0-rc1
和 Room 1.1.0-beta3
發布。
Paging
我們在 Paging 1.0.0
版本中沒有加入任何其他已知問題修正項目或新增功能。請將專案升級並改用 1.0.0-rc1
,協助我們對這個版本進行實戰測試,進而推出穩定可靠的 1.0.0
。
這個版本並無任何異動,與 1.0.0-beta1
相同。
Room
修正錯誤
- 修正當 Kotlin POJO 參照 Java 中定義的關聯實體時發生的編譯錯誤 b/78199923
2018 年 4 月 5 日
Room 1.1.0-beta2
、Paging 1.0.0-beta1
和 Paging RxJava 1.0.0-alpha1
發布。
Paging 會先在 Beta 階段進行短時間的測試,再推出候選版。目前我們並無規劃要對 Paging 1.0
做進一步 API 變更,進行 API 變更的門檻也非常高。
Paging 的 Alpha 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();
Paging
新功能
- 透過新的
android.arch.paging:rxjava2
構件新增了RxPagedListBuilder
。
API 變更
修改 API 以闡明執行工具在建構工具中的作用:
setBackgroundThreadExecutor()
已重新命名為setFetchExecutor()
(在PagedList.Builder
和LivePagedListBuilder
中)setMainThreadExecutor()
已重新命名為setNotifyExecutor()
(在PagedList.Builder
中)。
將
PagedList.mCallbacks
成員的狀態修正為不公開。
修正錯誤
LivePagedListBuilder
將在指定的執行工具 (而非 Arch 元件 IO 執行緒集區) 中觸發初始PagedList
載入程序。修正了內部
DataSource
包裝函式中的失效行為,這類包裝函式是用於導入DataSource.map
及停用預留位置的PositionalDataSource
載入功能 b/77237534
Room
修正錯誤
修正了 Room 的 Rx
Single
和Maybe
實作中提前回收查詢的重大錯誤;在該錯誤的影響下,如果您在傳回的Single
或Maybe
執行個體中加入超過 1 個觀測工具,就會發生問題。b/76031240如果是透過交易呼叫 RoomDatabase.clearAllTables,該方法不會對資料庫執行
VACUUM
操作。b/77235565
2018 年 3 月 21 日
Room 1.1.0-beta1
、Paging 1.0.0-alpha7
和 Lifecycles 1.1.1
發布。
Room
API 變更
- 根據 API 審查意見回饋,
@RawQuery
不再接受傳遞String
做為查詢參數。您必須使用 SupportSQLiteQuery。請參閱 SimpleSQLiteQuery,瞭解如何輕鬆建立支援引數的 SupportSQLiteQuery 執行個體。 - RoomDatabase.Builder 的 fallbackToDestructiveMigrationFrom 方法現在接受
vararg int
,而不是vararg Integer
。
修正錯誤
RoomDatabase.clearAllTables 現在會嘗試設定 WAL 檢查點並對資料庫執行
VACUUM
操作,將空間還給作業系統。@RawQuery
現在接受在observedEntities
屬性中使用任何 Pojo,前提是 Pojo 透過其Embedded
欄位或Relation
參照了一或多個實體。b/74041772Paging:Room 的 DataSource 實作現在能夠正確地處理多資料表依附元件 (例如關係和彙整項目)。先前,這些方法無法觸發新結果,或是可能無法編譯。b/74128314
Lifecycles
只有一項小幅異動:android.arch.core.util.Function
從 arch:runtime
移至 arch:common
。這樣一來,即使沒有執行階段依附元件,也能使用該函式,例如在下方的 paging:common
中使用。
lifecycle:common
是 lifecycle:runtime
的依附元件,因此這項變更不會直接影響 lifecycle:runtime
,只會影響 Paging 等直接依附於 lifecycle:common
的模組。
Paging
Paging 1.0.0-alpha7
連同 Lifecycles 1.1.1
一起發布。由於 Paging alpha7 仰賴上方提及的 Function
類別移動,您必須將 lifecycle:runtime
依附元件更新為 android.arch.lifecycle:runtime:1.1.1
。
Paging alpha7
預計將是 Paging 進入 Beta 階段前的最後一個發布版本。
API 變更
DataSource.LoadParams
物件具有公用建構函式,DataSource.LoadCallback
物件是抽象物件。這樣一來,就能包裝DataSource
或直接使用模擬回呼測試DataSource
。b/72600421- 提供 DataSource 和 DataSource.Factory 的對應工具。
map(Function<IN,OUT>)
可讓您轉換、包裝或修飾DataSource
所載入的結果。mapByPage(<List<IN>,List<OUT>>)
可讓您批次處理載入項目 (例如,如果從 SQL 載入的項目需要另外查詢獨立的資料庫,可採批次處理方式完成)。
- 新增了
PagedList#getDataSource()
做為便利方法。b/72611341 - 從 API 中移除所有淘汰類別,包括
recyclerview.extensions
套件的其餘部分和LivePagedListProvider
。 - 將
DataSource.Factory
從介面變更為抽象類別,以啟用對應功能。
修正錯誤
- 將建構工具變更為最終版。b/70848565
- Room
DataSource
實作現在經過修正,可處理多資料表查詢;這項修正包含在 Room 1.1.0-beta1 中 (請見上文)。 - 修正了在啟用預留位置且總大小為網頁大小的整數倍數時,無法為
PositionalDataSource
叫用BoundaryCallback.onItemAtEndLoaded
的錯誤。
2018 年 3 月 2 日
Room 1.1.0-alpha3
發布。這是 Room 1.1.0
預計推出的最後一個 Alpha 版本。
API 變更
InvalidationTracker 的
addObserver
和removeObserver
方法現已同步,需要透過非 UI 執行緒呼叫。這可防止在觀測資料表時發生某些競爭狀況。RoomDatabase 類別有一個新的
clearAllTables()
方法,可截斷所有資料表內容。b/63807999SupportSQLiteQuery
現在有一個getArgCount()
方法,可傳回查詢參數的數量。b/67038952
修正錯誤
Paging 查詢現可正確支援
@RawQuery
。b/72600425Room 現在可正確地為所產生的
Dao
類別命名,避免同為某個套件內部類別的 2 或多個Dao
介面因使用相同名稱而發生衝突的情況。b/73536380系統會將
Pojo
中的一般欄位類型正確地剖析為擴充類別的成員。b/73534868系統可正確地剖析
Dao
介面中沿用自依附元件構件的查詢參數。b/68118746為
@Relation
所產生的查詢現在可正確地逸出欄位名稱。b/70925483
2018 年 2 月 27 日
Paging 1.0.0-alpha6
連同支援資料庫 27.1.0 一起發布。
ListAdapter
和幾個相關類別已直接從 Paging 程式庫移至 RecyclerView,另外還有一些重新命名異動,目的是讓特定類別的函式更明顯易懂。這個 Paging Alpha 版本可能是最後一個包含重大 API 變更的版本。
API 變更
- 類別已移至 recyclerview-v7:
ListAdapter
- 類別已重新命名並移至 recyclerview-v7:
ListAdapterHelper
->AsyncListDiffer
ListAdapterConfig
->AsyncDifferConfig
DiffCallback
->DiffUtil.ItemCallback
- 類別在 paging-runtime 中已重新命名:
PagedListAdapterHelper
->AsyncPagedListDiffer
經移動的類別是與 RecyclerView 有搭配使用效應,而獨立於 Paging 程式庫的類別。也就是說,這些類別不必依附於 Paging Alpha 版本即可使用,但這也代表採用 Paging 的應用程式必須同時升級至 Alpha 6 和支援資料庫 27.1.0。
** Paging Alpha6 遷移指南:**
- 將 Paging 和 RecyclerView 週期依附元件更新為
android.arch.paging:runtime:1.0.0-alpha6
和com.android.support:recyclerview-v7:27.1.0
- 這些更新必須同時完成,原因是 ListAdapter 已從 Paging 移至 RecyclerView
- 將所有
ListAdapterHelper
參照更新為AsyncListDiffer
- 目前已移除
getItem(index)
/getItemCount()
,取而代之的模式為呼叫更明確的getCurrentList().getItem(index)
和getCurrentList().size()
- 目前已移除
- 將所有
ListAdapterConfig
參照更新為AsyncDifferConfig
- 將所有
DiffCallback
參照更新為DiffUtil.IttemCallback
- 將所有
PagedListAdapterHelper
參照更新為AsyncPagedListDiffer
- 將
setList()
參照更新為submitList()
- 透過重新命名清楚顯示清單差異比較的非同步性質
修正錯誤
- 修正了停用預留位置後傳遞到初始載入的初始位置不正確的問題。b/73513780
2018 年 2 月 15 日
Room 1.1.0-alpha2
發布。
新功能
Room 現在支援在預先寫入記錄模式中開啟資料庫。在這個模式中,您的寫入資料不會再封鎖您的讀取查詢。雖然這個模式會耗用較多記憶體 (因為有多個連線),但執行速度通常更快。根據預設,如果裝置採用
API 16
以上級別,且並非低記憶體裝置,Room 會使用 WAL。您可以在RoomDatabase.Builder
中使用setJournalMode()
方法來控制這項行為。b/67757002Guava 支援:Room 現在支援在
DAO
查詢中傳回 GuavaOptional<T>
或ListenableFuture<T>
。如要使用ListenableFuture<T>
,您必須從 Room 匯入guava
構件 (android.arch.persistence.room:guava:1.1.0-alpha2
)。Room 現在支援從
DAO
查詢傳回java.util.Optional<T>
。DAO
類別中的@Transaction
方法現在支援使用介面方法搭配預設實作。這適用於Java 8
和Kotlin
。b/72416735
修正錯誤
採用
@Relation
的建構函式在有其他可使用的建構函式時,不會造成編譯錯誤。b/72884434在
@Query
方法中採用'
逸出的資料表名稱,現在於失效追蹤工具中可正確地逸出。b/72366965現在,Room 在註解處理期間會使用 Kotlin
@Metadata
註解來讀取類別結構。換句話說,即使類別從依附元件沿用了 pojo,Room 也能正確讀取其建構函式參數名稱。b/67181813修正了尋找降級遷移路徑時的問題。b/72153525
從現有資料庫遷移至 Room 時,系統現在可正確地處理非預設資料欄類型。b/71953987
Room 現在可正確地處理 Kotlin 類別中留存的
boolean?
欄位。b/72786402
2018 年 1 月 22 日
Lifecycles 1.1.0
、Room 1.1.0-alpha1
和 Paging 1.0.0-alpha5
發布。
Lifecycle 1.1.0
包裝變更
現在提供縮小許多的新型依附元件:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
API 變更
- 現在移除了已淘汰的
LifecycleActivity
和LifecycleFragment
,請改用FragmentActivity
、AppCompatActivity
或支援Fragment
。 - 為
ViewModelProviders
和ViewModelStores
新增了@NonNull
註解。 - 淘汰了
ViewModelProviders
建構函式,請直接改用其靜態方法。 - 淘汰了
ViewModelProviders.DefaultFactory
,請改用ViewModelProvider.AndroidViewModelFactory
。 - 新增了靜態的
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
方法,以擷取適合用於建立ViewModel
和AndroidViewModel
執行個體的靜態Factory
。
Room 1.1.0-alpha1
新功能
RawQuery
:這個新的 API 允許@Dao
方法接收 SQL 做為查詢參數 b/62103290、b/71458963fallBackToDestructiveMigrationsFrom
:RoomDatabase.Builder
中的這個新的 API 可讓您精細掌控要從哪個起始結構定義版本允許破壞性遷移 (與 fallbackToDestructiveMigration 相比) b/64989640- Room 現在僅支援新版 Paging API (alpha-4 以上版本),不再支援已淘汰的
LivePagedListProvider
。如要使用新的 Room Alpha 版,您需要使用 Pagingalpha-4
以上版本,並從LivePagedListProvider
切換至LivePagedListBuilder
(如果尚未這麼做的話)。
修正錯誤
- 改善對 Kotlin Kapt 類型的支援。b/69164099
- 欄位順序不會再使結構定義失效。b/64290754
Paging 1.0.0-alpha5
修正錯誤
- 修正停用預留位置後的網頁載入問題 b/70573345
- 提供額外記錄,以利追蹤 IllegalArgumentException 錯誤 b/70360195 (以及推測性 Room 修正項目)
- Javadoc 程式碼範例修正項目 b/70411933、b/71467637
2017 年 12 月 11 日
Paging alpha4-1
發布。這是 Paging Alpha 4 的小幅錯誤修正版本。
修正錯誤
- 不會檢查無效資料來源的回呼參數。b/70353706、b/70360195
2017 年 12 月 7 日
Paging alpha4
發布,包含重大變更和新增項目,大多數是針對網路以及網路 + 資料庫使用案例。
API 變更
DataSource
現在是非同步 API,可讓您輕鬆地直接從網路進行分頁:- 初始大小和資料的單一進入點
- 支援網路重試,做法是保留回呼並於稍後分派
- 執行緒安全回呼允許以非同步載入的方式,在 UI 執行緒上建立單一網路支援的
PagedList
。 - 更清楚地顯示與初始載入參數有關的錯誤行為
TiledDataSource
已重新命名為PositionalDataSource
,以反映其根據位置設定的索引,以及其在預留位置停用時不會並排顯示的情況。新增了
PageKeyedDataSource
,以支援內嵌於網路網頁載入內容中的下一個/上一個符記。KeyedDataSource
已重新命名為ItemKeyedDataSource
,以利清楚區別。LivePagedListBuilder
和DataSource.Factory
取代了LivePagedListProvider
。該建構工具提供相同功能,但支援更多元的自訂設定與更簡單的預設值。該工廠則可讓DataSource
的產生程式碼保持獨立於LiveData
。為資料庫 + 網路使用案例新增了
PagedList.BoundaryCallback
。PagedList.Builder
建構函式接受DataSource
+PagedList.Config
,現在更類似LivePagedListBuilder
,並允許使用 Java 語言的菱形運算子或 Kotlin 的推測類型。新增了
PagedList.getConfig()
,而PagedList.Config
現在具備公開成員屬性。KeyedDataSource.loadBefore()
不會再預期結果遭到撤銷。新增了
PagedListAdapter.onCurrentListChanged()
,以監聽最新消息並掌握目前顯示的 PagedList。
修正錯誤
- 修正了 PagedListAdapter(Helper) 中發生的 IndexOutOfBoundsException b/67883658
1.0.0 - 2017 年 11 月 6 日
所有主要元件 (Paging 除外) 現已達到 1.0.0
版。除了對 reactivestreams
程式庫做出了一項變更外,這個版本與 rc1
完全相同。
修正錯誤
LiveDataReactiveStreams
現已正確導入回應式串流規格。b/67999342
候選版 - 2017 年 10 月 18 日
所有主要構件 (Paging 除外) 現在都是 1.0.0-rc1
版。
我們在 1.0.0
版本中沒有安排任何其他已知問題修正項目或新增功能。請將專案升級改用 1.0.0-rc1
,協助我們對這個版本進行實戰測試,進而推出穩定可靠的 1.0.0
。
行為變更
- 在這個版本中,
Lifecycle.Event#ON_STOP
現在會在onSaveInstanceState
獲得呼叫時分派 (先前只會標示為CREATED
,不會在ON_STOP
事件發生時分派)。詳情請參閱 Lifecycles 說明文件。
修正錯誤
Room:
- Room 現在依附於最新的 xerial 構件,該構件可在編譯期間修正
OutOfMemory
問題。b/62473121 Query
方法現在可以加上@Transaction
註解。詳情請參閱@Transaction
參考文件。b/65112315- 將 Room 的
StringUtil
類別從公用 API 中移除 (從未打算用作公用 API)。
- Room 現在依附於最新的 xerial 構件,該構件可在編譯期間修正
Lifecycles:
當 Activity 有一部分是由 API 24 以下級別負責時,
LiveData
也能正常運作。b/65665621現在能夠正確呼叫父項類別中的
OnLifecycleEvent
方法,否則在編譯期間會顯示警告。b/63474615生命週期現在會保留
WeakReference
LifecycleOwner,以免 LifecycleOwner:如果生命週期持續保留在記憶體中 但這只是預防措施,請放心,Lifecycle
外洩)。
2017 年 10 月 9 日
Paging alpha-3
發布,這個新版本與 Lifecycles 和 Room 的 beta 2
版本相容。
修正錯誤
- 改善 Paging 說明文件。
2017 年 10 月 5 日
所有主要構件 (Paging 除外) 現已達到 beta 2
版。
這次發布並未提供 Paging 新版本。
修正錯誤
Lifecycles:
- 現在當
LiveData
處於停用狀態時,LiveDataReactiveStreams
可以正確地取消訂閱來源發布商。b/62609183 - 當父項類別的來源為另一個模組時,生命週期事件也會正確地套用到該父項類別。b/63474615
- 當觀測工具於訂閱項目建立期間取消訂閱時,LiveData 會正確處理觀測工具。b/66337741
依附元件樹狀結構現在提供 Java 8 語言構件適用的
FullLifecycleObserver
。b/66525578針對 ProGuard,請在 ProGuard 檔案中加入下方這行程式碼。 (1.0.0 版正式發布後則可忽略)
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
- 現在當
Room:
- 現在,如果
@Query
方法中傳回的 Pojo 有某個@NonNull
欄位與查詢回應中的所有資料欄皆不相符,Room 會在編譯時顯示錯誤。如果該欄位為@Nullable
,則 Room 只會顯示警告。b/67115337 - Room 現在可在新版 OS 中驗證索引。b/63132683
- 如果 Pojo 中有多個相符的建構函式,Room 預設會挑選無引數的建構函式。b/67353427
- 單一資料欄的主鍵如果是
Integer
或Long
,即可設為Nullable
。b/67086876 - 失效追蹤工具在測試模式中可正確處理重新輸入操作。 b/65471397
- Room 現在會在編譯時檢查資料欄和資料表名稱中是否有無效字元 (無效字元:
`
、"
)。b/64749111
- 現在,如果
2017 年 9 月 21 日
在這個版本中,所有架構元件模組都已至少達到 beta 1
(處於 alpha 2
的新 Paging 程式庫除外)。
我們沒有規劃任何其他 API 變更。雖然可能會有未規劃的變更,但是要在 1.0.0
穩定版發布之前變更任何 API 的門檻非常高,也不太可能發生。
- LifecycleActivity 和 LifecycleFragment 會在
1.0.0
穩定版發布之前移除。使用支援資料庫26.1.0
以上版本時不需要這些元件。
與 Alpha 階段不同,Beta 階段排定的時間長度極短。
版本變更
- Lifecycle 擴充功能和 Room 現已達到
beta 1
版。 - Paging 現已達到
alpha 2
版。 - Lifecycles (runtime、common) 和 Arch Core (common) 沒有異動。這兩個構件自 9 月 13 日以來一直是
1.0.0
版。
新構件
Lifecycles 現在有一個新構件
common-java8
。這個構件包含一個名為 DefaultLifecycleObserver 的新介面,當中有所有 Lifecycle 方法的預設實作。如果您使用的是 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
這兩個構件都已經是 Room 的依附元件,因此除非您是直接使用這些構件,否則不需變更版本檔案中的任何內容。
API 變更
Room:
- @ColumnInfo 註解現在支援為資料欄設定定序。b/62007004
- 系統預設會忽略
transient
欄位,但這類欄位加上@ColumnInfo
、@Embedded
或@Relation
註解時除外。b/62600692 - 除非主鍵是由系統自動產生,否則一律必須加上
@NonNull
註解。b/64292391- 這項變更可能需要遷移結構定義。不便之處,敬請見諒。
- 新增了一個便利註解 (@Transaction),可覆寫
DAO
方法並在交易中執行。
支援 SQLite 資料庫:
- 資料庫設定中的 API 變更。b/65349673 b/65499876
Paging:
- 改善 Paging 說明文件,提供更多範例和執行緒註解。
修正錯誤
- Room:
- 系統可正確處理
@Query
方法中的 Kotlin 多行字串。b/65809374
- 系統可正確處理
- Paging:
- Paging 構件不再依附於 junit。b/65690261
1.0.0 Alpha 9-1 - 2017 年 9 月 13 日
這是主要版本,當中的核心 Lifecycle 構件 (runtime、common) 和 Arch Core (common) 皆已達到穩定版本 1.0.0
。
隨著這項變更,支援資料庫 26.1.0 現在依附於這些程式庫。 AppCompatActivity 和 Support Fragment 皆導入了 LifecycleOwner 介面。
這個版本也依附於支援資料庫 26.1.0
,以充分運用新的整合功能。
新程式庫:Paging
這個版本還包括一個名為 Paging 的新程式庫,可讓您於必要時,輕鬆地將大型資料集分塊載入到 RecyclerView 中。Paging 發布 alpha1
版,將有專屬的發布週期。
API 變更
- 淘汰了下列類別,將在日後推出的版本中移除:
修正錯誤
如果應用程式在類別路徑內有註解,產生的類別現在會加上
@Generated
註解。 b/35754819修正了 MediatorLiveData 的觀測工具比較錯誤。b/64413274
[LiveData] 現在支援 SQLite
WITH
查詢。[ref-LiveData] b/62510164修正了在觀測到多個資料表時,InvalidationTracker 無法傳送正確清單的錯誤。b/65099281
修正了 Room 在 Windows 上會產生不同檔案的錯誤。b/64470691
現在支援在根套件中使用 LifecycleObservers。b/62310817
1.0.0 Alpha 9 - 2017 年 8 月 16 日
修正錯誤
- 修正了 LiveData 中的以下錯誤:在第一個 Observer 從所屬
onChanged
方法中移除後,第二個 Observer 會遭到忽略。b/64285805
1.0.0 Alpha 8 - 2017 年 8 月 1 日
行為變更
- 針對原始類型或加上 NonNull 註解的資料欄,新增了
NOT NULL
限制。這會改變資料表的結構,因此如果您目前使用的是架構元件 Alpha 7 以下版本,必須執行遷移才能保留資料,或是在建構工具中使用fallbackToDestructiveMigration()
方法。b/62007004
API 變更
1.0.0 Alpha 7 - 2017 年 7 月 26 日
修正錯誤
修正了 LifecycleRegistry
removeObserver
方法中的重大錯誤,該錯誤會打斷 LifecycleObserver 的再次新增操作。修正了自訂資料庫的 InvalidationTracker。b/63162311
1.0.0 Alpha 6 - 2017 年 7 月 25 日
行為變更
變更了 LifecycleObserver 呼叫的順序。先前,觀測工具一向是按照新增順序呼叫:如果
observer1
是在observer2
之前新增,就會比observer2
早收到ON_CREATE
和所有其他事件。這已不適用於破壞性事件,現在其觀測工具的呼叫順序與新增順序完全相反。 因此,目前的行為如下:如果observer1
的新增時間早於observer2
,ON_CREATE
會先傳送至observer1
,再傳送至observer2
(ON_START
和ON_RESUME
也是如此),但ON_PAUSE
活動會先傳送至observer2
,再傳送至observer1
(ON_STOP
和ON_DESTROY
也是如此)。如果缺少遷移作業,Room 會擲回例外狀況。過去 Room 只會清除資料庫,但現在會異常終止。 開發人員如想採用清除行為,可以呼叫建構工具 API。b/63872392
API 變更
為
RoomDatabase.Builder
新增了fallbackToDestructiveMigration()
方法,這樣就能在缺少遷移作業時清除資料庫。b/63872392架構元件現在依附於支援資料庫 26.0.0。
修正錯誤
修正了對 @Embedded 中建立的巢狀 @Relation 的處理方式。b/63736065
針對採用自動遞增主鍵的資料表修正了測試遷移作業問題。b/63393618
現在,執行 DELETE 或 UPDATE 查詢的 @Query 會正確接收引數。b/63872538
現在,當擁有者片段位於返回堆疊中,而設定出現兩次變更時,系統會保留 ViewModel。b/38445801
1.0.0 Alpha 5 - 2017 年 7 月 18 日
API 變更
為
RoomDatabase.Builder
新增了回呼方法,以觀測資料庫的建立或開啟時間。b/62699324@Query 可能會傳回 RxJava
Maybe
或Single
。b/62231019
您必須依附於 android.arch.persistence.room:rxjava2
構件,才能為 Room 新增 RxJava 支援。
修正錯誤
修正了不含任何參數的
@Delete
查詢。b/63608092修正了 Room 的 getter 和 setter 類型檢查。b/63733651
1.0.0 Alpha 4 - 2017 年 7 月 11 日
API 變更
為 RoomDatabase 新增了便利方法 (
runInTransaction()
)。@Insert
、@Delete
和@Update
方法現在可使用來自不同實體類型的參數。b/62682405
修正錯誤
修正了
@Dao
方法中的byte[]
處理方式。b/62460045Room 中的遷移作業檢查現在採用的比較方式不會區分大小寫。b/62875382
修正了 Lifecycle 構件的 ProGuard 設定。b/62113696
1.0.0 Alpha 3 - 2017 年 6 月 15 日
API 變更
@OnLifecycleEvent
現在僅支援 1 個事件參數。 這項變更是為支援 Java 8 所做的準備,以便我們能遷移至 內含預設方法的介面經過這項變更,只有包含@OnLifecycleEvent(ON_ANY)
註解的方法可以接收第二個類型為Event
的參數 (第一個參數為LifecycleOwner
)。詳情請參閱 Lifecycle 說明文件。LifecycleActivity
和LifecycleFragment
類別已移入android.arch.lifecycle:extensions
構件。MigrationTestHelper 會接收檢測執行個體,而非
Context
,這樣才能讀取測試素材資源中的結構定義,並在應用程式結構定義中建立資料庫。@DAO
方法中的@Insert
、@Delete
和@Update
註解現在可使用Iterable
做為參數類型。b/62259820
修正錯誤
系統不會再重複呼叫含有生命週期事件的覆寫方法。
系統現在可正確處理多個
IN
參數。b/62608681抽象 DAO 類別現在可設定用於接收
@Database
執行個體的建構函式。b/38488747DAO
現在可設定含有類型參數的超類別/介面。b/62103620
1.0.0 Alpha 2 - 2017 年 6 月 2 日
API 變更
InvalidationTracker 回呼現在可接收已變更的資料表名稱清單。(b/38468740)
縮減了 SupportSQLiteDatabase 類別的 API 介面。(b/38481640)
修正錯誤
- 提供適用於生命週期的 ProGuard 檔案。(b/62113696)
- 修正了類型轉換工具的資料流失問題。(b/62100716)
- 允許從
@Insert
查詢傳回Long[]
。
1.0.0 Alpha 1 - 2017 年 5 月 17 日
MinSDK:14
一般公告
儘管我們在推出前曾進行大量測試,但架構元件目前仍在 Alpha 測試階段。如要建置正式版應用程式,請注意在 1.0 版本發布前,API 將有變動,功能不一定完全可靠。如果您不習慣在自己使用的程式庫中進行偵錯,建議您先在個人專案中試用架構元件。
我們不建議所有人立即進行遷移,稍後將為 1.0 版架構元件提供遷移指南。
已知限制和問題
- 支援資料庫中的 Lifecycle
Fragment
和ActivityCompat
尚未導入至LifecycleOwner
介面。導入作業將在架構元件推出 1.0.0 版時完成。