1
我正嘗試使用內容解析器從內容提供者獲取數據。我試圖在一個線程中執行此操作,並不斷查詢新數據(每隔5秒左右)。ContentResolver查詢功能塊
public void run()
{
while (!this.cancelled)
{
// get the cursor to all the msgs
Cursor cur = this.mContentResolver.query(MY_URI, null, null, null, null);
.... // iterate through cursor, store some data, etc. (quick process)
// sleep the thread for a bit before we query again
try
{
Thread.sleep(5000); // sleep for 5 seconds
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
(運行方法是我從我的主UI線程啓動的線程的一部分)。
第一次執行查詢時,它似乎不會阻塞任何大量的時間(可能是幾ms),這對我來說似乎是正常操作。隨後的每個時間查詢都會被調用,它會阻塞整整30秒。
我不知道爲什麼它會立即執行第一次,然後每隔30秒阻塞一次。
任何人都可以說出爲什麼我可能會看到這種行爲?
感謝
編輯:找到原因,內容提供商在等待30秒,以釋放一個新的前清理光標。
首先,請嘗試使用其他URI。如果問題仍然存在,則可能是代碼中的問題,如果問題消失,那麼這是特定內容提供者的特定行爲。 – inazaruk
使用內容觀察者;不要調查變化 – CommonsWare
我會看看內容觀察員。你有一個關於如何使用內容觀察者的好教程的鏈接嗎? – harbinja