Cat*_*san 6 android android-cursorloader
我想知道如何使用它CursorLoader来填充屏幕上的小部件.在线的所有示例仅用于使用适配器,这非常有用.我需要的是一种可靠的方法来从Cursor和UI线程更新我的屏幕中的视图,而不会因为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) {
}
Run Code Online (Sandbox Code Playgroud)
一种解决方案是直接在onLoadFinished中检索所有光标字段,并将它们全部传递给处理程序以填充UI线程上的窗口小部件.但这很难看,因为我可能在光标中有很多值.我很想找到一种可靠的无碰撞方式来处理这一切.
在询问#android-dev之后SimonVT,readme帮助我了解了这一点.
没有任何东西onLoadFinished可以在UI线程上调用,所以理论上你应该使用HandlerReto书中建议的那样.但是,当使用a CursorLoader(这是迄今为止最常见的用例)时,您几乎可以保证onLoadFinished将在UI线程中调用它.
| 归档时间: |
|
| 查看次数: |
2759 次 |
| 最近记录: |