gpt4 book ai didi

Android 历史内容观察器

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:57:01 24 4
gpt4 key购买 nike

我实现了历史内容观察器,但它表现得很奇怪。对于历史中的每一次更改,它的 onChange() 函数都会运行 3-5 次。

static class BrowserOberser extends ContentObserver {
public BrowserOberser() {
super(null);
}

@Override
public boolean deliverSelfNotifications() {
return true;
}

@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Log.d("History", "onChange: " + selfChange);
}

}

我还使用

注册了我的观察者
BrowserOberser observer = new BrowserOberser();
getApplication().getContentResolver().registerContentObserver(Browser.BOOKMARKS_URI, true, observer );

并在 list 中添加了所需的权限。

代码工作正常但 onChange();每次历史变化运行 3-5 次
谁能帮我解决这个问题?

最佳答案

这至少是我最终解决问题的方法(我想在历史发生变化时阅读历史)

    @Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
/**
* Get SharedPreferneces of the user
*/
SharedPreferences pref= myContext.getSharedPreferences("com.tpf.sbrowser",
Context.MODE_PRIVATE);
long wherelong = pref.getLong("Date", 0);
DatabaseManager db=new DatabaseManager(myContext,1);
String[] proj = new String[] { Browser.BookmarkColumns.TITLE,
Browser.BookmarkColumns.URL, BookmarkColumns.DATE,};
String sel = Browser.BookmarkColumns.BOOKMARK + " = 0";
Cursor mCur = myContext.getContentResolver().query(
Browser.BOOKMARKS_URI, proj, sel, null, null);
Log.d("onChange", "cursorCount"+mCur.getCount());
mCur.moveToFirst();
String title = "";
String url = "";
long lastVisitedDate=0;
DbMessage msg = new DbMessage(lastVisitedDate,url, title);
/**
* Start reading the user history and dump into database
*/
if(mCur.moveToFirst() && mCur.getCount() > 0) {
while (mCur.isAfterLast() == false) {
title =mCur.getString(0);
url = mCur.getString(1);
lastVisitedDate =mCur.getLong(2);
if ((lastVisitedDate>wherelong) && (!title.equals(url))) {
msg.set(lastVisitedDate, url, title);
db.InsertWithoutEnd(msg);
pref.edit().putBoolean("BrowserHistoryRead", true).commit();
pref.edit().putLong("Date", lastVisitedDate).commit();
myContext.updateTime(wherelong,lastVisitedDate);
wherelong=lastVisitedDate;
}
mCur.moveToNext();
}
}
}

但是,如果有人能够分辨出 onChange 的哪个迭代(在问题的简单代码中)准确对应于页面加载中的哪个状态,那仍然会很棒。据我了解,在第一次迭代中标题与 url 相同,在第三次迭代中出现了正确的页面标题。但是在重定向期间,onChange 最多被调用了 5 次。那么有人可以确认哪个迭代对应哪个阶段吗?

关于Android 历史内容观察器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16643744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com