.net中如何同步获取数据方式增加一样数据自动刷新列表_期待已久的动态数据库工具终于来了!...
最新的 Android Studio 4.1 (目前處于 Canary 版本) 內(nèi)置了叫作?Database Inspector (數(shù)據(jù)庫(kù)檢查器) 的工具,它可以幫助開(kāi)發(fā)者在已運(yùn)行的應(yīng)用中檢查、請(qǐng)求以及修改數(shù)據(jù)庫(kù)。
△ Database Inspector 可用于修改數(shù)據(jù),
就像修改電子表格一樣有了 Database Inspector,修改數(shù)據(jù)庫(kù)就和編輯電子表格一樣簡(jiǎn)單。如果您使用 Jetpack Room并觀察請(qǐng)求結(jié)果,對(duì)數(shù)據(jù)庫(kù)的修改會(huì)直接體現(xiàn)在應(yīng)用里。本文中,我們將會(huì)在 Sunflower 應(yīng)用中使用 Database Inspector 來(lái)測(cè)試一些邊界值用例。Sunflower 是一款園藝類應(yīng)用,它向開(kāi)發(fā)者展示了基于 Android Jetpack 進(jìn)行應(yīng)用開(kāi)發(fā)的最佳實(shí)踐。所以強(qiáng)烈推薦大家克隆這個(gè)代碼倉(cāng)庫(kù),并且按照本文的操作嘗試一下。- Jetpack Room?持久化庫(kù)https://developer.android.google.cn/topic/libraries/architecture/room
- 代碼倉(cāng)庫(kù)https://github.com/android/sunflower
概覽
Sunflower 應(yīng)用的 UI 包含兩個(gè)標(biāo)簽頁(yè)。先看一下植物目錄標(biāo)簽頁(yè),里面列出了可以添加到我的花園的植物。在右上角有一個(gè)篩選按鈕,點(diǎn)擊該按鈕會(huì)按生長(zhǎng)區(qū)篩選植物,出現(xiàn)如下列表:
△ 點(diǎn)擊該按鈕來(lái)按照植物生長(zhǎng)區(qū)篩選植物
可以很直觀地看到,這個(gè)按鈕會(huì)根據(jù)一些條件來(lái)篩選植物。假設(shè)我們對(duì)整個(gè)工程完全不了解,希望通過(guò) Database Inspector 來(lái)搞清楚如何實(shí)現(xiàn)篩選功能。
從菜單欄依次選擇 View > Tool Windows > Database Inspector,就能在 Android Studio 里打開(kāi) Database Inspector。初次打開(kāi)工程的時(shí)候,需要靜待工程編譯完成后即可出現(xiàn) Database Inspector 的選項(xiàng)。
△ 在菜單欄中依次選擇 View > Tool Windows > Database Inspector 來(lái)打開(kāi) Database Inspector這樣就打開(kāi)了 Database Inspector:△ Database Inspector 窗口運(yùn)行 Database Inspector 需要在 API Level 26 或者更高的設(shè)備上運(yùn)行應(yīng)用,在下拉菜單里選擇該應(yīng)用的進(jìn)程:
△ 在下拉菜單中選擇運(yùn)行中的應(yīng)用進(jìn)程
選擇所要檢查的應(yīng)用進(jìn)程之后,數(shù)據(jù)庫(kù)的架構(gòu)就會(huì)出現(xiàn)在下面的面板上。如果要查看 Sunflower 數(shù)據(jù)庫(kù)表,需要找到 Databases 并展開(kāi) sunflower-db:△ 一旦選擇了進(jìn)程,應(yīng)用相關(guān)的數(shù)據(jù)庫(kù)就會(huì)列出來(lái)回到應(yīng)用,我們看一下經(jīng)過(guò)篩選的植物列表:?這個(gè)列表里有 Avocado (鱷梨)、Grape (葡萄)、Orange (橙子) 和 Tomato (番茄)。如果我按照植物名稱進(jìn)行排序,那么要找 Avocado 的話就會(huì)很方便。所以我們可以看看 Database Inspector 可不可以做到這點(diǎn)。首先,雙擊 Database Inspector 里的 plants 表來(lái)顯示表里的數(shù)據(jù)。數(shù)據(jù)是以默認(rèn)每頁(yè) 50 條記錄來(lái)顯示,不過(guò)如果數(shù)據(jù)總數(shù)更短,那么每頁(yè)的結(jié)果數(shù)量和頁(yè)數(shù)也會(huì)發(fā)生變化。點(diǎn)擊名稱列可以讓植物表按照名稱進(jìn)行排序。正如我們所想,Avocado 已經(jīng)排在列表的前面了,它就在數(shù)據(jù)表的第二行。請(qǐng)求數(shù)據(jù)庫(kù)
看一下 Avocado 的數(shù)據(jù)輸入,在應(yīng)用中可以使用 growZoneNumber 進(jìn)行篩選。要驗(yàn)證這一點(diǎn),我們運(yùn)行一個(gè)請(qǐng)求,將 growZoneNumber 設(shè)置為 9,對(duì)應(yīng)結(jié)果應(yīng)該是 Avocado。實(shí)際上,這個(gè)請(qǐng)求已經(jīng)在 PlantDao.kt 出現(xiàn)了,我們可以直接通過(guò) Room 的 @Query 注解來(lái)調(diào)用這個(gè)請(qǐng)求。每個(gè) @Query 注解的代碼行數(shù)旁邊都有一個(gè)運(yùn)行小圖標(biāo)。
當(dāng)我點(diǎn)擊運(yùn)行圖標(biāo)來(lái)請(qǐng)求 getPlantsWithGrowZoneNumber() 并且選擇對(duì)應(yīng)的數(shù)據(jù)庫(kù)的時(shí)候,會(huì)彈出一個(gè)對(duì)話框讓我們填寫(xiě): growZoneNumber 的值。
△ 您可以直接通過(guò) @Query 注解來(lái)運(yùn)行請(qǐng)求這里我們輸入 9 然后點(diǎn)擊 Run 來(lái)查看請(qǐng)求結(jié)果。除此之外,我們也可以在工具窗口里輸入我們自己的請(qǐng)求并運(yùn)行。這樣能夠提供更大的自由度,也不會(huì)受限于 Dao 接口里的請(qǐng)求語(yǔ)句定義。要運(yùn)行我們自己的查詢語(yǔ)句,點(diǎn)擊 Run Query 并且從右側(cè)新打開(kāi)的標(biāo)簽頁(yè)選擇 plants 數(shù)據(jù)庫(kù)。△ 點(diǎn)擊 Run Query 并且選擇應(yīng)用數(shù)據(jù)庫(kù)然后,在數(shù)據(jù)庫(kù)下拉菜單旁邊的文本框里輸入下面這句查詢語(yǔ)句,并點(diǎn)擊 Run。Select * from plants where growZoneNumber=9△ 您可以在 Database Inspector 里執(zhí)行 SQL 請(qǐng)求大家可以看到,這里請(qǐng)求的篩選結(jié)果和應(yīng)用里開(kāi)啟篩選器的時(shí)候是一樣的。修改以及調(diào)試數(shù)據(jù)庫(kù)
Database Inspector 使得調(diào)試應(yīng)用變得輕而易舉,它還可以讓開(kāi)發(fā)者直接修改設(shè)備上已運(yùn)行應(yīng)用的數(shù)據(jù)庫(kù)值。首先,我想在應(yīng)用 UI 上測(cè)試一下較長(zhǎng)的植物名稱。我們打算使用 Database Inspector 直接修改數(shù)據(jù)庫(kù)里的值,而不是通過(guò)修改數(shù)據(jù)源再刷新數(shù)據(jù)來(lái)進(jìn)行測(cè)試。△ 您可以在 Database Inspector 里編輯數(shù)據(jù)庫(kù)現(xiàn)在這里的數(shù)據(jù)元素已經(jīng)可以編輯,我將這里的 Apple 改為 A really special type of Apple,然后點(diǎn)確認(rèn)。如果您也在同步進(jìn)行操作,您可以輸入一些期望長(zhǎng)度的名稱數(shù)據(jù)在 UI 中進(jìn)行測(cè)試。△ 如果您的應(yīng)用使用 Jetpack Room 并且監(jiān)聽(tīng)請(qǐng)求結(jié)果,那么您無(wú)需重啟應(yīng)用就能看到數(shù)據(jù)的變化回到應(yīng)用會(huì)發(fā)現(xiàn)我們什么操作都沒(méi)做,應(yīng)用就已經(jīng)顯示了最新的數(shù)據(jù)。如果您的應(yīng)用使用 Jetpack Room,并且監(jiān)聽(tīng)著請(qǐng)求結(jié)果 (使用 LiveData/Flow),您就沒(méi)必要發(fā)起數(shù)據(jù)庫(kù)請(qǐng)求來(lái)刷新數(shù)據(jù)。否則,根據(jù)您應(yīng)用觸發(fā)請(qǐng)求的方式,可能需要重啟應(yīng)用或者重新打開(kāi)相關(guān)的 activity 或者 fragment 才可以。這也算是遷移到 LiveData 或者 Flow的一個(gè)不錯(cuò)的理由,這樣也能發(fā)揮 Database Inspector 的全部潛能。再來(lái)看看應(yīng)用,可以發(fā)現(xiàn)這里的 CardView 并沒(méi)有很好地顯示較長(zhǎng)的植物名稱。我會(huì)在未來(lái)修復(fù)這個(gè)問(wèn)題,接下來(lái)我們先來(lái)看看下面的測(cè)試。△ 應(yīng)用并沒(méi)有很好地處理較長(zhǎng)的名字每個(gè)植物都有不同的澆水間隔,我想試試看如果錯(cuò)過(guò)了澆水的日子會(huì)發(fā)生什么。要實(shí)現(xiàn)這個(gè)目的,我們需要在花園里添加一些植物,但是首先,這里我們先在 Database Inspector 里勾選 Live updates (實(shí)時(shí)刷新)。當(dāng)啟用 Live updates 之后,Database Inspector 會(huì)自動(dòng)顯示應(yīng)用里對(duì)數(shù)據(jù)庫(kù)所做的修改。△ 選擇 Live updates然后回到我的花園標(biāo)簽頁(yè),添加一些植物,比如 Avocado 和 Eggplant,但是首先,回到 Database Inspector,然后雙擊 garden_plantings 來(lái)觀察數(shù)據(jù)表。請(qǐng)注意觀察圖片,當(dāng)添加新植物的時(shí)候,garden_plantings 表會(huì)有哪些變化。
△ Database Inspector 會(huì)自動(dòng)顯示數(shù)據(jù)修改這些植物的澆水周期都是三天。當(dāng)然我不會(huì)等待三天來(lái)測(cè)試這個(gè)功能,這里我們直接編輯數(shù)據(jù)庫(kù),然后修改?last_watering_day 的值。我們?cè)倩氐?Database Inspector,雙擊進(jìn)入 garden_plantings 數(shù)據(jù)表,last_watering_day 位于數(shù)據(jù)庫(kù)的最后一列。我會(huì)把兩個(gè)記錄的 last_watering_day 值修改為目前日期稍早一些時(shí)候。△ 對(duì)數(shù)據(jù)庫(kù)的修改會(huì)直接展示出來(lái)好吧,看上去好像調(diào)整的日期有點(diǎn)太靠前了,不過(guò)應(yīng)該也能達(dá)到測(cè)試的目的。應(yīng)用的 UI 似乎正常顯示了所需澆水的日期。在下一步開(kāi)發(fā)中,我們也許可以增加一個(gè)提醒功能,當(dāng)已經(jīng)超出澆水日期的時(shí)候,可以向用戶發(fā)出提醒。快來(lái)嘗試新推出的 Database Inspector!歡迎大家和我們分享心得。如果遇到任何問(wèn)題,請(qǐng)?jiān)谶@里提出:?https://issuetracker.google.com/issues/new?component=192708&template=840533&title=%23database-inspector推薦閱讀
?點(diǎn)擊屏末?|?閱讀原文?|?下載最新 Android Studio 4.1 Canary 版本,即刻體驗(yàn) Database Inspector 工具!總結(jié)
以上是生活随笔為你收集整理的.net中如何同步获取数据方式增加一样数据自动刷新列表_期待已久的动态数据库工具终于来了!...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 回答有30奥币选择中60澳币
- 下一篇: 有哪些视频网站的高清视频素材比较好?