[問題] Content Provider 運作方式

作者: darkk6 (Mr. Pan)   2015-07-02 21:57:52
大家好,想請問關於 Content Provider 的問題
主要是想了解 Content Provider 是否有類似生命週期的流程
(感覺上好像是沒有啦?)
原因有點長,先感謝大家的耐心觀看~
我主要想問這個問題的原因是,我寫了一個 Content Provider
提供我自己寫的其他 App 能夠存取 Database 資料
透過 Clipboard 的 OnPrimaryClipDataChange (反正就是監聽剪貼簿)
監聽當剪貼簿內容更動時,紀錄剪貼簿中的內容到 database 中
由於功能中有讓使用者設定紀錄上限,因此當剪貼簿資料改變時:
1. 若紀錄中有一模一樣的文字,則跳過
2. 檢查紀錄是否已達上限
3. 若有到上限刪除最舊的一筆
4. 將新的資料 insert 到 Database 中
我現在考慮的點在於,是否這些步驟都透過直接操作 DB 處理,如:
1. SELECT 1 FROM table WHERE data='XXXXXXX'
2. SELECT count(id) FROM table;
.... 依此類推
還是要在 Content Provider 中先建立 Cache 用的 HashMap 或 ArrayList,
在第一步時直接用 map.contains("XXXX") 來決定是否往下做
但問題就在於,這個 map 存在記憶體中的時間到底有多久?
如果 Content Provider 呼叫完就會消失,那我建立這個 cache 的 HashMap
就沒有意義了。
另外就是,假設呼叫後不會消失,那麼 App_A 和 App_B要新增資料時,這個
HashMap 會不會遇到類似 Thread safe 的問題,或者他們根本是兩個不同的
instance ?
感謝大家~~~
作者: charlesdc (MoOn)   2015-07-04 00:39:00
先查一下cursor的特性應該就能猜出來 CP的問題我的經驗是CP只是協定 cursor是類似指標的東西資料還是存在於原本的地方,所以關鍵應該在你監聽的實作在什麼元件上面

Links booklink

Contact Us: admin [ a t ] ucptt.com