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