java – 如何从managedQuery转换到LoaderManager / CursorLoader?

我正在开发面向API 8级(2.2,Froyo)的Android应用程序.我正在使用一个ContentProvider,这很简单,我正在使用SimpleCursorAdapter来填写我的列表视图,但是我在SimpleCursorAdapter的文档中注意到无标志的构造函数已经被弃用了以下注释:

This constructor is deprecated.
This option is discouraged, as it results in Cursor queries being performed on the application’s UI thread and thus can cause poor responsiveness or even Application Not Responding errors. As an alternative, use LoaderManager with a CursorLoader.

由于我定位到API级别8,所以LoaderManager不会与活动绑定.兼容包中的FragmentActivity类执行此操作,但是我没有使用Fragments.

我的问题是:在应用程序中应该如何使用LoaderManager / CursorLoader来定位11个API级别?我被迫转换到片段,或者我应该回到已弃用的SimpleCursorAdapter构造函数(但是使用AsyncTask来保持UI线程友好,CursorLoader应该怎么做)?

编辑:

我在这个blog post中写了相当广泛的LoaderManager.查看它,让我知道如果它的帮助! 🙂

原帖:

肯定肯定是与LoaderManager一起去的. CursorLoader类卸载在线程上加载数据的工作,并在短期活动刷新事件(如方向更改)期间保持数据持久.除了执行初始查询外,CursorLoader还会向您请求的数据集注册一个ContentObserver,并在数据集更改时调用forceLoad(),并自动更新.这是非常方便的,因为您不必担心自己执行查询.当然可以使用AsyncTask来保持你的应用程序UI线程友好,但是它会涉及更多的代码…并实现你的类,这样它将会保留加载的Cursor over Activity不会很简单底线是LoaderManager / Loader会自动为您执行此操作,以及根据活动生命周期正确创建和关闭游标.

要在面向11个API级别的应用程序中使用LoaderManager / CursorLoader,只需在兼容性包中使用FragmentActivity类. FragmentActivity只是一个Activity,已经为Android兼容性支持而创建,并且不需要在应用程序中使用Fragments.只需使用getSupportLoaderManager()而不是getLoaderManager(),并且您应该全部设置.当然,您可以为每个屏幕实现一个父级FragmentActivity,并在Fragment中显示其布局(通过在Activity的onCreate()方法中使用FragmentActivity.getSupportFragmentManager()).如果您决定优化平板电脑的应用程序,这种设计可能会使多窗格布局的过渡更容易.这也是一个很好的学习经验:)

这也是一个非常好的tutorial.尝试并努力通过它,如果您有任何其他问题,请不要犹豫,留下评论.

翻译自:https://stackoverflow.com/questions/8899497/how-to-transition-from-managedquery-to-loadermanager-cursorloader

转载注明原文:java – 如何从managedQuery转换到LoaderManager / CursorLoader?