gpt4 book ai didi

android - 从 onLoadFinished() 中的游标填充小部件

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

我想知道如何使用 CursorLoader 来填充屏幕上的小部件。所有在线示例仅适用于使用适配器,效果很好。我需要的是一种可靠的方法来从 Cursor 和 UI 线程更新屏幕中的 View ,并且不会有时因为 StaleDataException 或光标突然停用而崩溃。这是我目前的方法,但我仍然收到一些来自用户的崩溃报告。

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle arg1) {
CursorLoader loader = null;

switch (id) {
case LOADER_ID_DATA:
loader = new CursorLoader(...);
break;
}

return loader;
}

@Override
public void onLoadFinished(Loader<Cursor> loader, final Cursor cursor) {
handler.post(new Runnable() {

@Override
public void run() {
if (getActivity() == null)
return;

updateView(cursor);
}
});
}

@Override
public void onLoaderReset(Loader<Cursor> arg0) {
}

一种解决方案是直接在 onLoadFinished 中检索所有光标字段,并将它们全部传递给处理程序以填充 UI 线程上的小部件。但这很难看,因为我的游标中可能有很多值。我很想找到一种可靠的无崩溃方式来处理所有这些问题。

最佳答案

在询问 #android-dev SimonVTreadme 后,我帮助我弄清了真相。

没有任何内容表明 onLoadFinished 将在 UI 线程上调用,因此理论上您应该使用 Reto 书中建议的 Handler。但是,当使用 CursorLoader(这是迄今为止最常见的用例)时,您几乎可以保证 onLoadFinished 将在 UI 线程中调用。

关于android - 从 onLoadFinished() 中的游标填充小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10105885/

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