问题标签 [asynctaskloader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 带缓存的自定义 AsyncTaskLoader
有几个关于如何实现自定义 AsyncTaskLoaders 的教程,但我发现没有一个教程讨论如何处理数据缓存 - 在所有这些教程中,数据只是加载和交付。
您能否给我一些提示,如何实现自定义 AsyncTaskLoader,它会立即返回缓存的数据版本,但同时请求更新数据并在它们到达时立即提供更新的版本?这甚至可以通过装载机实现,还是我必须使用另一种机制?
背景:我有一个 IntentService,它接受数据加载请求并以广播的形式传递结果。我有一个 UI (ListView) 应该显示来自 ArrayAdapter 或 CrusorAdapter 的数据。我需要一些“缓存”层来保持数据的最新已知版本立即显示,但一旦有新数据到达,就会发布它们的更新并重新显示它们。
虽然这可以通过使用哑 SQLite 数据库来实现即时版本和广播接收器来完成新数据更新,但我会优先考虑一些可以使这种“backgorund”数据加载机制透明的东西,就像 Loader 派生类恕我直言。
android - FragmentActivity、AsyncTaskLoader、ListFragment 在重置/恢复时不加载/显示?
替代标题:在清除后台内存后恢复时,不会绘制 ListFragment 内容。
您可以试试这个并在此处查看源代码,它是Google 演示应用程序的 ActionBarSherlock 演示应用程序版本。
当您打开 ListFragment 并转到其他(使用应用程序的高内存)时。ActivityManager 将终止进程“不再需要......”如果您通过长时间按住 Home 按钮返回 Activity,则列表将重新加载,但随后出现“无应用程序”。
我找不到导致这种行为的任何原因,也许我是盲人,也许这是一个错误。我花了一些时间调试,在我看来应用程序已加载,但随后某些东西阻止它们显示。
在第 469 行,我添加了一些调试消息。
在上述情况下,标签已正确记录,但出现“无应用程序”而不是列表。
有人可以向我解释一下,为什么会发生这种情况以及如何解决它?
android - 从其他 Fragment 重启 Loader
我有一个 ViewPager,里面有 3 个片段。每个 Fragment 使用 AsyncTaskLoader 从数据库中获取数据。现在我想从片段 C 重新启动片段 A 的加载器,但如果我打电话
结果为空。我读到每个 LoaderManager 都有一个 Activity/Fragment,每个 Fragment 都有一个自己的 LoaderManager。有没有人解决我的问题的好主意?
我将实现一个 GlobalLoaderManager,它是一个单例模式并保存片段。ViewPager 重用了他的 Fragments,所以我在这个 Manager 中只有一个 Pager Fragment 的实例。
android - 自定义 AsyncTaskLoader 类不支持对 forceLoad 的调用
这是一个有点奇怪的问题。我正在使用一个扩展 AsyncTaskLoader 的类(真正的交易目标 API 级别 11,而不是兼容性)来接收另一个应用程序组件发送的意图,并通过从本地数据库下载一些数据来响应。我在主要活动的 onStart 方法中使用 LoaderManager 初始化加载程序。
首次启动时,加载程序工作正常。以下是发生的一系列事件: Activity.onCreateLoader - Loader 构造函数 - Loader.onStartLoading - Loader.loadInBackground - Activity.onLoadFinished - Loader.deliverResult
但是,当我退出活动并反复重新启动它时,最终它将按预期停止工作。这将是顺序:Activity.onCreateLoader - Loader 构造函数 - Loader.onStartLoading - 无
在 Loader.onStartLoading 中有一个对 forceLoad 的调用,但在后一种情况下,它似乎没有做任何事情。我搜索过的所有地方似乎都说调用 forceLoad 是一种让加载程序开始执行其工作的近乎防弹的方法,但我一直遇到它根本什么都不做的情况。加载程序的属性在每种情况下都是相同的(isStarted、isAbandoned 和 isReset 无论如何都会给出相同的结果)。坦率地说,我没有发现加载器在工作正常的情况和不加载任何内容的情况之间有什么不同。
android - 带有加载对话框的 Android 应用程序 - 最佳方法
我是论坛的新手,也是安卓开发的新手。我在整个互联网和 stackoverflow 上进行了搜索,但我无法得到我的问题的实际答案。我想知道您对我的应用程序的最佳方法(处理程序、异步任务等)的看法。我有:
* *1 - 单击时必须显示列表的按钮(数据是通过解析html响应获得的)
2 - 当列表未加载时,应用程序必须显示“加载”对话框。**
现在我可以在单击按钮时加载列表,但有时(取决于 Internet 连接)可能需要很长时间,我想显示加载进度对话框。我尝试实现 AsyncTasks 但赢得了onPostExecute方法,对话框已关闭,但列表未显示在 UI 上,尽管它具有正确的数据。
谁能帮助我最好的方法?非常感谢。
android - LoaderManager 开始加载时通知 Fragment
我有从 Internet 获取数据的ListFragment和AsyncTaskLoader 。ListFragment由BaseAdapter填充。
加载数据时,BaseAdapter用旋转进度条填充第一行。当数据被加载并且没有发生错误时,数据被填充到ListView中。但是如果发生了一些错误(我在AsyncTaskLoader中有一个标志指示该错误),则BaseAdapter用错误消息填充第一行。
问题:
当加载出错时,LoaderManager会自动尝试再次加载数据(forceLoad()
调用),这很好。但我需要通知BaseAdapter数据正在加载,以便BaseAdapter可以将错误消息更改为旋转进度条。
当LoaderManager调用时,是否有任何简单的好方法来通知片段forceLoad()
?
我的建议:
ListFragment 将实现下面的接口,并将这个 ListFragment 传递到 AsyncTaskLoader 的构造函数中。
然后我可以打电话onLoadingStatusChanged(true)
进来。我担心在 AsyncTaskLoader 中持有对 Fragment 的引用可能会泄漏该片段。loadInBackground()
onLoadingStatusChanged(false)
deliverResult(T data)
android - 后台工作者作为 - 没有 UI 或服务的 AsyncTask 或 Loader 或 Fragment
我知道关于这个主题有很多线程,但是:我有一个简单的任务。
这很简单,我数到 60 并更新 UI 上的 TextView。当我们必须解决配置更改(如旋转屏幕)等时,问题就会出现,因为我们必须避免内存泄漏并正确处理所有线程。
在 Android 3.0 中引入,加载程序开始发挥作用。加载器现在是在后台线程中处理长期操作的首选方式(我们不必太关心线程)。但如果我理解正确的话,它们主要用于从某个地方加载一些数据并将它们显示在 Activity / Fragment 中。比如下载一些网页内容并以列表等形式显示。
编辑:现在我发现了一些其他可能性如何做一些后台工作,比如使用没有 UI 的片段(当活动重新创建时 RetainInstance = true)或将其作为服务启动的想法。他们大概可以以更简单的方式实现这一目标。
我的问题是,由于我是 Android 新手,我应该走哪条路?
android - AsyncTask 返回 null
我正在使用 jsoup 解析 html 代码,显然我使用的是 AsyncTask 但它返回 null (javanullpointerexception)。
然后执行任务并返回文档:
我猜那个文件总是空的。我的代码出了什么问题?感谢您的帮助。
android - Android:从片段启动时 AsyncTaskLoader 崩溃
我有这个片段:
公共类 ResultFragment 扩展 Fragment 实现 LoaderCallbacks{
AsyncTaskLoader 看起来像这样:
公共类 RESTLoader 扩展 AsyncTaskLoader {
该应用程序因一个神秘的(至少对我而言)错误而崩溃:
http://i46.tinypic.com/260fw43.png
通过放入一些 Log.ds,我知道 AsyncTaskLoader 的构造函数甚至没有被调用。我已经尝试将加载器的 init() 移动到片段生命周期的后期部分。如果这很重要,片段就在 ViewPager 中。从 Activity 调用时,AsyncTaskLoader 工作正常。
关于我做错了什么的任何想法?
android - 自定义 AsyncTaskLoader,5 次尝试后未调用 loadinBackground
我有一个SherlockListFragment
实现自定义的AsyncTaskLoader
. 在被覆盖的onStartLoading()
中,我有:
包含SherlockListFragment
在以下位置启动加载程序onActivityCreated
:
和 :
问题是在 5 次激活/导航到我的 FragmentActivity 之后,loadinBackground()
没有调用。被onStartLoding
称为,以及forceLoad
,但仅此而已。没有例外,LogCat 中没有任何内容。
有任何想法吗?