在“观察”了 ContentObserver 之后,我注意到 API 16 之前的 OnChange 没有传递任何参数,所以我决定在我的项目的每一行中实现它(项目正在使用内置的 DownloadManager 下载 url)
对于每一行,我正在创建一个新的 ContentObserver :
Uri downloadsContentUri = Uri.parse("content://downloads/my_downloads/downloads/" + appDownloadId);
DownloadsObserver downloadsObserver = new DownloadsObserver(downloadId, new Handler());
getContentResolver().registerContentObserver(downloadsContentUri, true, downloadsObserver);
如您所见,Uri 总是按行 id 更改(在我检查过的 DownloadManager DB 上相同),并且在此代码之后,我将所有观察者存储在列表中,奇怪的是 OnChange 被调用只有一次且仅用于第一次下载,即使下载完成后也不会再次调用..
我在这里做错了什么?如何完成对 DownloadManager DB 上每一行的观察?(我是系统应用)
谢谢。