问题标签 [android-loader]
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 - 使用 LoaderCallbacks 对 ListView 进行排序按日期
我正在尝试使用 LoaderCallbacks 创建一个 Listview 我能够看到列表中的所有元素。但是现在我想对其进行排序,以便数据库中的最新项目是顶部的第一个项目。我在数据库中有一个名为 COLUMN_MESSAGE_DATE 的 Coulmn,其中包含一个时间戳,我希望最新的行位于顶部。在 onCreateLoader 中,当我返回加载程序时,我按此 Coulmn 排序,但最新的行仍位于底部... . 我错过了什么吗?
}
android - Android Fragment - 使用 Activity 的 loadermanager 而不是 Fragment 的。好吗?
给定一个片段,它使用加载器从数据库加载(大量)数据。
问题 :
我有一个寻呼机适配器,它在用户离开持有它的选项卡时破坏片段,并在用户返回该选项卡时重新创建它。由于这种重新创建,每次都会创建一个新的加载器,并且每次都会加载数据。
问题 :
为了避免每次创建fragment时都重新创建loader,是否可以getActivity.getSupportLoaderManager.initLoader(loaderId, null, false)
在fragment的onActivityCreated
方法中使用?
我已经尝试过,测试过它,它似乎工作正常。但我不相信这是正确的。
android - 加载器:onLoadFinished 只调用一次
我在一项活动中使用了一个装载机。我能够启动加载程序并调用它 onLoadFinished 。当我更新数据并onContentChanged
在加载程序中调用时,我看到loadInBackground
并且deliverResult
都被调用了。这似乎是小径停止的地方。我没有收到任何回电onLoadFinished
。
如果我重新创建活动(又名方向更改或重新启动),那么它将以相同的方式运行。
我正在使用 support-v4 加载器和加载器管理器。
我SharedPreferenceLoader
基于CommonsWare 的加载器:
以下是加载程序的使用方式:
更新
我在LoaderManager源代码中找到了这个。onLoadFinished
如果数据具有相同的引用,看起来好像没有调用调用。
android - 从 android 中的联系人加载器获取电话号码:投影崩溃
我正在使用Google 教程中的示例代码。投影是我指定要收集的数据的地方。如何指定我想要电话号码?来自谷歌的样本没有得到电话号码。但是我想获取电话号码,所以我添加了 Phone.NUMBER
. 但是当我这样做时,应用程序总是崩溃。这是我的投影。
这是错误跟踪
android - 数据库更改时 CursorLoader 不刷新
我有一个非常简单CursorLoader
的加载一个Cursor
. 我将光标存储为我的活动中的一个字段。(所以不在一个CursorAdapter
!)
当我打电话时ContentResolver.notifyChange(URI_BUNDLES, null)
,我希望 CursorLoader 重新加载,但事实并非如此。(见LoaderCallbacks
下文;我记录回调。)
为了调试这个问题,我注册了一点ContentObserver
,它确实有效,奇怪的是:
所以知道我不知道如何从这里调试。我的CursorLoader
初始化没问题,我的ContentObserver
作品,但由于某种原因,CursorLoader
当底层数据库发生变化时,它不会重新加载光标。有什么问题?
这是我的LoaderCallbacks
:
android - 在 OnLoadFinished 中调用 swapCursor 时的长时间延迟
我正在实现一个 ListView,其中包含一个带有 LoaderCallbacks 的自定义 CursorAdpater。当 OnCreatLoader 被调用时,我正在运行一个从数据库中获取光标的 AsyncTaskLoader。我注意到在加载光标后调用 swapCursor 有延迟。有没有解决方案,比如一次加载 10 个项目?如果是这样,我在哪里可以做到这一点?
android - 将数据从 SQLite 异步加载到 Android ListView 的最佳方法是什么?
我是 Android 新手,并且已经成功实现了ArrayAdapter
一个在ListView
. 我还创建了一个扩展类,SQLiteOpenHelper
我想用它在ListView
.
据我所知,我似乎应该使用 aLoader
来异步查询数据,并充当我的数据和 UI 之间的中间人。
Loader
andCursorLoader
文档仅涉及如何在查询ContentProvider
. 这使我认为最好的方法可能是创建一个ContentProvider
为我的数据库提供结构化接口的方法 - 但是关于创建ContentProvider
状态的 Android 文档:
如果使用完全在您自己的应用程序中,则不需要提供程序来使用 SQLite 数据库。
有什么特别的原因我不应该写 aContentProvider
吗?除非我遗漏了一些东西,否则这似乎会为数据层提供一个很好的抽象,并且意味着我可以在使用CursorLoader
它时获得使用它的所有好处。
在我的情况下,数据库仅供我的应用程序使用- 那么有哪些替代方案,是否有任何好的教程可以显示该过程的开始到结束?
谢谢!
android - 为什么片段恢复后再次调用onLoadFinished?
我对装载机有一个特殊的问题。目前我不确定这是我的代码中的错误还是我误解了加载程序。
该应用程序
问题出现在对话中(想象一下类似于 Whatsapp 的东西)。我使用的加载器是基于AsyncTaskLoader 示例实现的。我正在使用支持库。
- 在 OnCreate 中,我启动了一个加载器来检索缓存的消息。
- 当 CachedMessageLoader 完成时,它会启动 RefreshLoader 以检索(在线)最新消息。
- 每个加载器类型作为一个不同的 ID(例如,离线:1 在线:2)
这非常有效,但有以下例外。
问题
当我打开另一个片段(并将事务添加到后台堆栈)然后使用返回键返回到会话片段时,onLoadFinished
再次调用之前的两个结果。这个调用发生在片段有机会再次启动加载器之前......
我之前获得的这种“旧”结果的传递会导致消息重复。
问题
- 为什么这些结果再次交付?
- 我用错了这些装载机吗?
- 我可以“使”结果“无效”以确保我只将它们交付一次,还是我必须自己消除重复?
调用堆栈跟踪
更新 1 这里提到的加载器是由对话片段发起的:
更新 2 我的 MainActivity (最终托管所有片段)子类 SherlockFragmentActivity 并基本上像这样启动片段:
对话片段像这样开始“显示配置文件”片段:
android - 检查 Loader 是如何工作的
如何检查 Loader 的工作情况?isStared()
不要帮助我。回来后onLoadFinished()
isStarted()
总是true
。
android - 解释 AsyncTaskLoader
我不明白所有功能在AsyncTaskLoader
做什么,例如onCancelLoad()
and onForceLoad()
。所有函数和调用它们的顺序都没有正确记录。
假设我想在后台下载一个文件并在需要时取消它。onCancelLoad()
已有的有 什么用cancelLoadInBackground()
。