標籤:
udacity android 學習筆記: lesson 4 part b
乾貨店打雜的 /titer1 /Archimedes
出處:https://code.csdn.net/titer1
聯絡:1307316一九六八
聲明:本文採用下面協議進行授權: 自由轉載-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,轉載請註明作者及出處。
tips:https://code.csdn.net/titer1/pat_aha/blob/master/Markdown/android/
lesson 4b,後期將拆分為4大小節強烈建議保留自己重新命名的字幕,又一次壓制29 units are waitted 上一章節完畢了 db的建立和內容的建立,這章節將講到content provider,期待全部內容的大團結(匯總)
why contents providers matter
怎樣 理解 多個app 與一個 content provider 的聯絡
一 create a content provider
more todo
深入 分析contentProvider,
see instructor notes below
在api sdk中
1.1 what is URI
data is assiated with views in the terms of universal resource identifiers or URIs.
一句話,universal resource identifiers簡稱
又見觀察者模式the code register an android construct called a content observer
1.2 重點 重複 how to build a content provider
- determine URIs
- update contract
- fill out URI matcher
- Implement fuctions
1.2.1 define a URI
- weather / location for insert /update/delete
- weather_with_location 多天情況
- weather_with_location_and_date 一天情況
回想 contractit is an agreement etween the data models , storrage, and views下一步將會講到怎樣 更新 contract
1.2.2 update URI
4b-3 lesson todo? 為什麼要綁定一串數字?一個URI相應一常數?最好的事就是這裡加上調試的記錄(動態)
這章節就是在講 weatherContract類的變化
- add content_URI
- add content_type
細心的人會發現,中的部分是為URI的初始化做準備
這是須要興許代碼跟蹤的位置,這裡構成query.
build uri
下面是checklist
看,注意本圖 和 上去兩個圖的差別
- buildweatheruri 曾經是沒有實現的
1.2.3 fill out URImatcher
urimatcher:
uses a simple expression ayntax to help us match URI’s for a content provider
直覺,正則表達式
- #表示number
- *表示string
實踐時間
讓我們看看下一步幹什麼
代碼如上,就是這樣
曾經是fake data,如今是基於資料庫的data 構成uri
1.2.4 content provider1 2 4 1 register the content provider
複習,什麼是contact ?約定?進入到 test provider 的環節,
lesson 4b_9 now
1 2 4 2 content provider replace the SQL ?
register now, tell all(include pakage manager) by xml format
here, the content resolver can resolve it!
next to do:
now ,code time
1 2 4 3 code the content rovider 之 oncreate
時刻想著 這是最後一個環節,contenprovider..這裡關注期中的onCreate
gettype 是 content provider的一函數
宛如凝視說的,這裡的函數作用就是為了測試uribuilder的使用
還有我們的任務就是加入 weather_with_location_and_date等的響應
品讀凝視,作用就在這裡
終於這裡介紹了原始testGetYpe, 可是不會終於使用!故凝視
又見到todo list
只是答案非常快就有了,
比上上一個圖,我們添加了兩種 uri類型
1 2 4 4 難 code the content rovider 之 query
剛剛把子標題標註好了,oh ,yeah!悄悄看了下prtplayer 的視頻選項,驚歎 多媒體播放器的整合畫質改動! yeah!細心的點開 曆史版本號碼記錄,知道potplayer的開發曆程,艱辛!
這就是query,傳說中比較複雜的函數
下面是query函數的底部,有重要要說
- tell the observer they listen to the changes that happen to that URI and any of its descendants
又見觀察者模式,介面感知底層增/減/變,都靠它了話說 setNotificationUri不止一處,待確認.
當全部的query代碼加入好了,我們能夠開啟下面的凝視,測試我們的provider
來吧,又是一個任務
這是 完畢 全部query的時候,aha!
first weahther query code:
then, location query code:
初步比較,感覺直覺第一個參數,table名字不一樣。
有了兩張表,不操作的話,就是獨立的兩張表,可是須要inner join他們
所以
meaning :
tbl inner join tbl2 on tbl.loc_key = tbl2.id
下面是selection,我覺得就是協助記憶的
下面是調用sqlbuilder query相關函數,
- 調用了 sqlbuiler(簡稱呼)
- 使用了剛才封裝的selection字元函數
- 參數(location/startDate)來源於uri
以上僅僅有location,下面將同一時候包括location和date進行查詢
以上兩個函數都被一下調用,content provider的query
能夠為上面的三個函數圖 繪製一個調用diagram其它:有沒有線上 sql 資料庫 文法 練習器online sql
小憩
- 假設單張表的查詢(僅僅看天氣或者Location),直接在content provider的query函數中調用
sql相關的qurey函數
- 假設涉及到兩張表的查詢,就要單獨處理,這裡使用了 sqliteQueryBuilder
query操作完畢,只是第四環節還有其它操作,繼續
task insert
前篇有2分鐘,代碼就是上面這幅,只是細節
- 異常處理
- 插入uri 相關的trick (待研究insert時深入 todo)
又見任務牌,先在目標就是完好insert
”’
強烈建議保留自己重新命名的字幕,又一次壓制
”’
get id for insert ? now:
tell oberserver now:
測試驅動的開發,例如以下,美麗
task update + delete
lesson 4b_22這裡的套路 和 Inset 是一樣的,取得 row courserr ,tell obersver... have a test所以要補圖,或者補代碼,後期補上,ok
todo
update get couser
update fun tell observer
delete function get courser
delete functionj tell obersver
call the test unit to ganrantee the work
高效的 update & insert
批量插入 比 逐條插入 快封裝為事務 transaction第一輪的直覺,這不是 高效,這是為了 方便 交易回復?todo 思考 ,快多少? 10倍?
重複 總結篇 content provider redux
理論上,我應該把經典的圖再給站上來。、事實上應該把這裡雖有字幕給摘抄出來,逐步分析。todo最後一句,“but we still use it in our code ”,興許將會用到實際項目裡面
todocreat fetch weahter task
拍一個有羽毛的機器人吧重構
udacity android 學習筆記: lesson 4 part b