问题标签 [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.

0 投票
1 回答
942 浏览

android - 使用 LoaderCallbacks 对 ListView 进行排序按日期

我正在尝试使用 LoaderCallbacks 创建一个 Listview 我能够看到列表中的所有元素。但是现在我想对其进行排序,以便数据库中的最新项目是顶部的第一个项目。我在数据库中有一个名为 COLUMN_MESSAGE_DATE 的 Coulmn,其中包含一个时间戳,我希望最新的行位于顶部。在 onCreateLoader 中,当我返回加载程序时,我按此 Coulmn 排序,但最新的行仍位于底部... . 我错过了什么吗?

}

0 投票
2 回答
3421 浏览

android - Android Fragment - 使用 Activity 的 loadermanager 而不是 Fragment 的。好吗?

给定一个片段,它使用加载器从数据库加载(大量)数据。

问题 :

我有一个寻呼机适配器,它在用户离开持有它的选项卡时破坏片段,并在用户返回该选项卡时重新创建它。由于这种重新创建,每次都会创建一个新的加载器,并且每次都会加载数据。

问题 :

为了避免每次创建fragment时都重新创建loader,是否可以getActivity.getSupportLoaderManager.initLoader(loaderId, null, false)在fragment的onActivityCreated方法中使用?

我已经尝试过,测试过它,它似乎工作正常。但我不相信这是正确的。

0 投票
1 回答
724 浏览

android - 加载器:onLoadFinished 只调用一次

我在一项活动中使用了一个装载机。我能够启动加载程序并调用它 onLoadFinished 。当我更新数据并onContentChanged在加载程序中调用时,我看到loadInBackground并且deliverResult都被调用了。这似乎是小径停止的地方。我没有收到任何回电onLoadFinished

如果我重新创建活动(又名方向更改或重新启动),那么它将以相同的方式运行。

我正在使用 support-v4 加载器和加载器管理器。

SharedPreferenceLoader基于CommonsWare 的加载器

以下是加载程序的使用方式:

更新 我在LoaderManager源代码中找到了这个。onLoadFinished如果数据具有相同的引用,看起来好像没有调用调用。

0 投票
1 回答
1715 浏览

android - 从 android 中的联系人加载器获取电话号码:投影崩溃

我正在使用Google 教程中的示例代码。投影是我指定要收集的数据的地方。如何指定我想要电话号码?来自谷歌的样本没有得到电话号码。但是我想获取电话号码,所以我添加了 Phone.NUMBER. 但是当我这样做时,应用程序总是崩溃。这是我的投影。

这是错误跟踪

0 投票
1 回答
932 浏览

android - 数据库更改时 CursorLoader 不刷新

我有一个非常简单CursorLoader的加载一个Cursor. 我将光标存储为我的活动中的一个字段。(所以不在一个CursorAdapter!)

当我打电话时ContentResolver.notifyChange(URI_BUNDLES, null),我希望 CursorLoader 重新加载,但事实并非如此。(见LoaderCallbacks下文;我记录回调。)

为了调试这个问题,我注册了一点ContentObserver,它确实有效,奇怪的是:

所以知道我不知道如何从这里调试。我的CursorLoader初始化没问题,我的ContentObserver作品,但由于某种原因,CursorLoader当底层数据库发生变化时,它不会重新加载光标。有什么问题?


这是我的LoaderCallbacks

0 投票
0 回答
221 浏览

android - 在 OnLoadFinished 中调用 swapCursor 时的长时间延迟

我正在实现一个 ListView,其中包含一个带有 LoaderCallbacks 的自定义 CursorAdpater。当 OnCreatLoader 被调用时,我正在运行一个从数据库中获取光标的 AsyncTaskLoader。我注意到在加载光标后调用 swapCursor 有延迟。有没有解决方案,比如一次加载 10 个项目?如果是这样,我在哪里可以做到这一点?

0 投票
0 回答
632 浏览

android - 将数据从 SQLite 异步加载到 Android ListView 的最佳方法是什么?

我是 Android 新手,并且已经成功实现了ArrayAdapter一个在ListView. 我还创建了一个扩展类,SQLiteOpenHelper我想用它在ListView.

据我所知,我似乎应该使用 aLoader来异步查询数据,并充当我的数据和 UI 之间的中间人。

LoaderandCursorLoader文档仅涉及如何在查询ContentProvider. 这使我认为最好的方法可能是创建一个ContentProvider为我的数据库提供结构化接口的方法 - 但是关于创建ContentProvider状态的 Android 文档:

如果使用完全在您自己的应用程序中,则不需要提供程序来使用 SQLite 数据库。

有什么特别的原因我不应该写 aContentProvider吗?除非我遗漏了一些东西,否则这似乎会为数据层提供一个很好的抽象,并且意味着我可以在使用CursorLoader它时获得使用它的所有好处。

在我的情况下,数据库仅供我的应用程序使用- 那么有哪些替代方案,是否有任何好的教程可以显示该过程的开始到结束?

谢谢!

0 投票
2 回答
7079 浏览

android - 为什么片段恢复后再次调用onLoadFinished?

我对装载机有一个特殊的问题。目前我不确定这是我的代码中的错误还是我误解了加载程序。

该应用程序

问题出现在对话中(想象一下类似于 Whatsapp 的东西)。我使用的加载器是基于AsyncTaskLoader 示例实现的。我正在使用支持库。

  • 在 OnCreate 中,我启动了一个加载器来检索缓存的消息。
  • 当 CachedMessageLoader 完成时,它会启动 RefreshLoader 以检索(在线)最新消息。
  • 每个加载器类型作为一个不同的 ID(例如,离线:1 在线:2)

这非常有效,但有以下例外。

问题

当我打开另一个片段(并将事务添加到后台堆栈)然后使用返回键返回到会话片段时,onLoadFinished再次调用之前的两个结果。这个调用发生在片段有机会再次启动加载器之前......

我之前获得的这种“旧”结果的传递会导致消息重复。

问题

  • 为什么这些结果再次交付?
  • 我用错了这些装载机吗?
  • 我可以“使”结果“无效”以确保我只将它们交付一次,还是我必须自己消除重复?

调用堆栈跟踪

更新 1 这里提到的加载器是由对话片段发起的:

更新 2 我的 MainActivity (最终托管所有片段)子类 SherlockFragmentActivity 并基本上像这样启动片段:

对话片段像这样开始“显示配置文件”片段:

0 投票
2 回答
244 浏览

android - 检查 Loader 是如何工作的

如何检查 Loader 的工作情况?isStared()不要帮助我。回来后onLoadFinished() isStarted()总是true

0 投票
1 回答
772 浏览

android - 解释 AsyncTaskLoader

我不明白所有功能在AsyncTaskLoader做什么,例如onCancelLoad()and onForceLoad()。所有函数和调用它们的顺序都没有正确记录。

假设我想在后台下载一个文件并在需要时取消它。onCancelLoad()已有的有 什么用cancelLoadInBackground()