在单个ContentObserver中注册多个内容URI

4

我正在跟踪浏览器链接。因此,我正在使用ContentObserver并在ContentObserver中注册。

所以我必须在单个ContentObserver中注册多个URI。

如果我这样做,在单个ContentObserver中注册多个URI是一个好主意吗?或者我会遇到任何问题吗?

BlockURL.java

public class BlockURLObserver extends ContentObserver {
    private Context context;
    public BlockURLObserver(Context con) {
        super(null);
        context = con;
        context.getContentResolver().registerContentObserver(Uri.parse("content://com.android.chrome.browser/bookmarks"), true, this);
        context.getContentResolver().registerContentObserver(Browser.BOOKMARKS_URI, true, this);
    }
    ...
}
1个回答

2

我认为,最好创建一个单一的内容观察器来监听多个URI,而不是创建多个观察器。

这里给出一个通用的解释。

可以在单个contentobserver中注册多个URI。同时,使用URI可以在onChange()方法中区分代码。

    @Override
    public void onChange(boolean selfChange, Uri uri) {
        super.onChange(selfChange);
    }

从API 16开始,可以执行此onChange(boolean selfChange, Uri uri)函数。这样就可以在单个内容观察器中注册多个URI。

    @Override
    public void onChange(boolean selfChange, Uri uri) {
        super.onChange(selfChange);
        if(uri.toString.equalsgetUrifor((BOOKMARKS_URI))) {
            //do your stuff
        }
        if(uri.toString.equals(getUrifor(SOMETHING_ELSE))) {
            //...
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接