- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道这里有很多与这个主题相关的主题,但我还没有阅读我的问题的真正答案,其中很多都是 2010 年的,当时似乎没有那么强调让任务脱离 UI 线程。
我需要进行一个足够密集的数据库查询,从而导致 UI 响应明显延迟(在我的 S5 上,因此在很多手机上情况会更糟)。我想将查询推送到另一个线程。我一直在使用 ASyncTask 这样做,但我读到 ASyncTask 存在问题以及屏幕旋转、中断应用程序和内存泄漏等问题。我到处都看到的建议是使用 CursorLoader,但其构造函数需要 Uri,因为它是为内容提供者设计的。内容提供程序不仅对我的应用程序来说似乎有点大材小用,而且 Google 的内容提供程序教程页面特别指出“如果完全在您自己的应用程序中使用,则不需要提供程序来使用 SQLite 数据库。”
所以我的问题是 ASyncTask 和内容提供程序之间存在什么(如果有的话)?是否有针对内部数据库的 CursorLoader 实现?也许 ASyncTask 的更强大的实现?
最佳答案
I've been doing so with ASyncTask, but I'm reading that there are issues with ASyncTask and things like the screen rotating, interrupting apps, and memory leaks.
AsyncTask
正确使用有点棘手。拥有一个 managed by a retained fragment (例如,模型 fragment )有帮助。
Is there any implementation of CursorLoader for internal databases?
没有一个效果很好。我是这样说的:我已经写了一篇(后来已弃用)。 The Loader
interface is an abstraction designed around a singular use case: ContentProvider
。
Maybe a more robust implementation of ASyncTask?
并不是说 AsyncTask 需要“更健壮”,而是你必须意识到它的各种问题。例如,大肆宣扬的 CursorLoader
使用 AsyncTask
。
归根结底,AsyncTask
所做的只是使用线程池中的后台线程,并将通信传递回主应用程序线程以获取工作结果。有多种方法可以实现同一目的。目前,我喜欢使用 greenrobot's EventBus (或者来自线程池的一个,如果可能有大量同时发生的事件),与 an ordinary thread 结合使用。除此之外,您还可以:
Handler
的普通线程View
上使用带有 post()
的普通线程Activity
上使用带有 runOnUiThread()
的普通线程所有这些都假设这项工作相当短且一次性,就像你的情况一样。对于较长和/或不太一次性的工作,请使用 IntentService
,可能是 my WakefulIntentService
如果工作可能需要几十秒或更长时间。
但是,所有这些仍然存在问题,在某些情况下与 AsyncTask 本身存在相同的问题(例如,正确解决配置更改)。没有“银弹”。
关于java - 适用于 Android 中小型应用程序的线程外数据库接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25218504/
我在我的 Xcode 项目目录中输入了以下内容: keytool -genkey -v -keystore release.keystore -alias mykey -keyalg RSA \
假设我有一个像这样的 DataFrame(或 Series): Value 0 0.5 1 0.8 2 -0.2 3 None 4 None 5 None
我正在对一个 Pandas 系列进行相对繁重的应用。有什么方法可以返回一些打印反馈,说明每次调用函数时在函数内部进行打印还有多远? 最佳答案 您可以使用跟踪器包装您的函数。以下两个示例,一个基于完成的
我有一个 DataFrame,其中一列包含列表作为单元格内容,如下所示: import pandas as pd df = pd.DataFrame({ 'col_lists': [[1, 2
我想使用 Pandas df.apply 但仅限于某些行 作为一个例子,我想做这样的事情,但我的实际问题有点复杂: import pandas as pd import math z = pd.Dat
我有以下 Pandas 数据框 id dist ds 0 0 0 0 5 1 0 0 7 2 0 0
这发生在我尝试使用 Gradle 构建时。由于字符串是对象,因此似乎没有理由发生此错误: No signature of method: java.util.HashMap.getOrDefault(
您好,有人可以解释为什么在 remaining() 函数中的 Backbone 示例应用程序 ( http://backbonejs.org/examples/todos/index.html ) 中
我有两个域类:用户 class User { String username String password String email Date dateCreated
问题陈述: 一个 pandas dataframe 列系列,same_group 需要根据两个现有列 row 和 col 的值从 bool 值创建。如果两个值在字典 memberships 中具有相似
apporable 报告以下错误: error: unknown type name 'MKMapItem'; did you mean 'MKMapView'? MKMapItem* destina
我有一个带有地址列的大型 DataFrame: data addr 0 0.617964 IN,Krishnagiri,635115 1 0.635428 IN,Chennai
我有一个列表list,里面有这样的项目 ElementA: Number=1, Version=1 ElementB: Number=1, Version=2 ElementC: Number=1,
我正在编译我的源代码,它只是在没有运行应用程序的情况下终止。这是我得到的日志: Build/android-armeabi-debug/com.app4u.portaldorugby/PortalDo
我正在尝试根据另一个单元格的值更改单元格值(颜色“红色”或“绿色”)。我运行以下命令: df.loc[0, 'Colour'] = df.loc[0, 'Count'].apply(lambda x:
我想弄清楚如何使用 StateT结合两个 State基于对我的 Scalaz state monad examples 的评论的状态转换器回答。 看来我已经很接近了,但是在尝试申请 sequence
如果我已经为它绑定(bind)了集合,我该如何添加 RibbonLibrary 默认的快速访问项容器。当我从 UI 添加快速访问工具项时,它会抛出 Operation is not valid whi
在我学习期间Typoclassopedia我遇到了这个证明,但我不确定我的证明是否正确。问题是: One might imagine a variant of the interchange law
我是一名优秀的程序员,十分优秀!