gpt4 book ai didi

android - 更新 onLoadFinished 中的列导致我的查询无限运行

转载 作者:行者123 更新时间:2023-11-29 01:53:01 24 4
gpt4 key购买 nike

目前我有一个查找表中第一行的查询。在 OnCreateLoader 方法中使用 Loader 调用此查询。

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
// TODO Auto-generated method stub

int age = args.getInt("age");
int yearDay = args.getInt("year");

String sort = "(CASE WHEN DateSeen IS NULL "
+ "THEN 1 ELSE 0 END) DESC," + "DateSeen DESC," + "Abs((" + age
+ " * 365) - (Age * 365) + (" + yearDay
+ " - (Case When YearDay is null then " + yearDay
+ "- 50 ELSE Yearday END)))";

String[] projection = new String[] { DatabaseProvider.KEY_DESCRIPTION,
DatabaseProvider.KEY_INT_AGE, DatabaseProvider.KEY_INT_YEARDAY,
DatabaseProvider.KEY_ID };

return new CursorLoader(this, DatabaseProvider.CONTENT_URI, projection,
null, null, sort);

}

在 onLoadFinished 方法中,我在屏幕上呈现结果,但我也更新了该行中的 DateSeen 列(这样如果我刷新,该行就不会再次出现)。

    @Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor c) {

// lots of code to display results in UI

// update SeenDate
c.moveToFirst();

String Id = c.getString(c.getColumnIndex(DatabaseProvider.KEY_ID));
ContentResolverCaller.UpdateDateSeen(Id);
}

我的问题(至少我在推测)是当结果的 DateSeen 列被更新时,因为加载器有一个 Content Observer 可以在数据更改时自动更新,这会导致重新运行查询并且它会进入无限循环。

我的问题是是否可以关闭加载程序的自动更新功能?如何在不触发加载程序再次运行查询的情况下更新 DateSeen 列?

编辑:我忘记包含 UpdateDateSeen 方法以防出现问题。它在下面(我有一个类,我在其中存储我所有的 ContentResolver 调用,不确定它是否是最好的解决方案 - 只是出于整洁)

    public static int UpdateDateSeen(String Id) {
ContentValues cv = new ContentValues();
cv.put(DatabaseProvider.KEY_DATESEEN, new Date().getTime());

return context.getContentResolver().update(
Uri.withAppendedPath(DatabaseProvider.CONTENT_URI, Id), cv,
null, null);
}

最佳答案

我假设您在数据库助手类中调用 setNotificationUri 来监视数据库中的任何更改。你不应该打电话

getContentResolver().notifyChange(uri, null);

在您的更新查询中。这不会触发内容解析器再次更新查询。

关于android - 更新 onLoadFinished 中的列导致我的查询无限运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16837800/

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