当前位置: 首页 > 面试题库 >

如何从managedQuery过渡到LoaderManager / CursorLoader?

南门茂才
2023-03-14
问题内容

我正在开发针对API级别8(2.2,Froyo)的Android应用程序。我正在使用a
ContentProvider,这很简单,并且正在SimpleCursorAdapter用于填写列表视图,但是我在SimpleCursorAdapter的文档中注意到,无标记构造函数已弃用,并带有以下注释:

不推荐使用此构造方法。不建议使用此选项,因为它会导致在应用程序的UI线程上执行游标查询,从而可能导致响应能力差,甚至导致应用程序无响应错误。或者,将LoaderManager与CursorLoader一起使用。

由于我定位的是API级别8,因此与LoaderManager无关ActivityFragmentActivity兼容性包中的类可以执行此操作,但是我没有使用Fragments。

我的问题是:LoaderManager/CursorLoader在针对11年前的API级别的应用中应如何使用?我是否被迫过渡到Fragments还是应该回到已弃用的SimpleCursorAdapter构造函数(但要使用an
AsyncTask来保持UI线程友好,这CursorLoader是应该这样做的)?


问题答案:

编辑:

LoaderManager在这篇
博客文章中,
我已经写了很多有关该主题的
文章 。检查一下,让我知道是否有帮助!:)

原始帖子:

绝对,绝对,绝对与一起使用LoaderManager。该CursorLoader班卸载加载数据的上一个线程的工作,并保持在短期活动的刷新事件,如取向改变持久数据。除了执行初始查询外,还向您请求的数据集CursorLoader注册一个ContentObserver,并forceLoad()在数据集发生更改时对其自身进行调用,从而进行自动更新。这非常方便,因为您不必担心自己执行查询。当然可以利用它AsyncTask来保持您的应用程序UI线程友好,但是它将涉及很多代码…并实现您的类,例如,它将保留已加载Cursor的内容Activity将不是一件容易的事。底线是LoaderManager/Loader会自动为您执行此操作,并注意Cursor根据Activity生命周期正确创建和关闭。

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

这也是一个非常不错的 教程 。尝试并逐步解决它,如果有任何其他疑问,请随时发表评论。



 类似资料:
  • 目前,想从 Subversion 过渡到 Git 其实并不困难,只要你不把 Git 和 Subversion 混淆就行。一旦你明白了两者在概念上的区别,这个改变的过程就会变得容易。 分布式与集中式 Subversion 是一个集中式(centralized)的版本控制系统。所有的开发团队成员都工作在单一的远程中央仓库上,当在这个中央仓库上进行 “签出(checkout)” 操作时,它就会在你的本地

  • 问题内容: 我已经开始使用过渡来“现代化”网站的感觉。到目前为止,过渡效果很好。现在,我想知道是否有可能基于其他因素(例如,类更改时)触发转换。 以下是相关的CSS: 触发更改的JavaScript是: 但是过渡似乎并没有发生-它只是从一个州跳到另一个州。 我究竟做错了什么? 问题答案: 当您删除属性时,它确实起作用。 原因是只能转换带有数字的CSS属性。您认为“ 50%状态”应介于“ ”和“ ”

  • Werkzeug 原本有一个神奇的导入系统钩子,如果启用它则可以从一个模块导入所有东西而且 还可以根据实际需要选择性加载。不幸的是,这种方法被证明是效率低下的,用它来代替Pyt hon实现和GAE是不可靠的。 从 0.7 开始我们不推荐短入口,强烈鼓励从一个实际实现的模块来导入。Werkzeug 1.0 将完 全不支持这种神奇的导入钩子。 因为手动去发现那么实际的函数被导入并重写他们是一个痛苦和乏

  • 关于过渡 在 Glide 中,Transitions(直译为”过渡”) 允许你定义 Glide 如何从占位符到新加载的图片,或从缩略图到全尺寸图像过渡。Transition 在单一请求的上下文中工作,而不会跨多个请求。因此,Transitions 并不能让你定义从一个请求到另一个请求的动画(比如,交叉淡入效果)。 默认过渡 不同于 Glide v3,Glide v4 将不会默认应用交叉淡入或任何其

  • Wiki ▸ [[API--中文手册]] ▸ [[核心函数]] ▸ 过渡 过渡是一种特殊类型的选择器([[selection|选择器]]),这种操作符的应用随时间平滑而不是瞬间变换。你可以使用过渡[[transition()|选择器#transition]] 操作符从选择得到一个过渡。但是,过渡通常支持和选择器(例如attr和style)一样的操作符,不是所有的操作符都支持。例如,你必须在过渡开始

  • 在视图中,过渡效果是常见的场景。平滑的过渡动画能够给用户更好的感官体验。san 提供了基础的过渡机制,你可以基于此开发丰富的过渡效果。 版本:>= 3.3.0 s-transition 在元素上通过 s-transition 指令,可以声明过渡动画控制器。 <button s-transition="opacityTransition">click</button> 这个对象是元素 owner