问题标签 [android-loadermanager]

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 投票
3 回答
5612 浏览

android - 数据库全局实例

所以我想为所有应用程序活动创建一个数据库实例。我找到了以下代码:

我不明白什么时候可以关闭 SQLiteDatabase 实例。

0 投票
2 回答
2444 浏览

android - LoaderManager 的范围是什么?

在 LoaderManager 中识别 Loader 时,您使用唯一的 id。我在问这些 id 必须有多独特。

每个 Activity 和 Fragment 都有自己的 LoaderManager 吗?片段是否使用它们附加到的 Activity 的 LoaderManager?应用程序是否只有一个 LoaderManager?

如果您能告诉我如何更改您正在使用的 LoaderManager,则可以加分。如果我希望我的 Activity 中的每个片段都使用相同的 LoaderManager(其中一些正在提取相同的数据并且共享 Loader 会很好),这可能吗?

0 投票
1 回答
4816 浏览

android - Android中关于SQLite数据库游标的几个问题

为了在我的应用程序中实现数据库访问,我遵循了Lars Vogel 教程,但我对一些事情感到非常困惑......

  1. 每次调用fetchTodo新游标时都会创建并返回。将前一个光标留给垃圾收集器。所以,如果我不使用startManagingCursor甚至不使用CursorLoader,我应该在完成后调用.close()光标上的 a 吗?当然,超出fetchTodo范围,例如:

    光标 cursor = mNotesAdapter.fetchTodo(); // 做点什么... cursor.close();

我已经完成了这个游标,并且将在下一次获取时创建新的游标,我应该像这样关闭它还是应该将它留给垃圾收集器?虽然我认为我在谈论两件完全不同的事情......重点是,我应该像上面的例子那样关闭它吗?

  1. Cursor也有一个.deactivate()方法,文档说它使用更少的资源(比活动游标)。我应该什么时候使用这个?例如,在我的应用程序中,我有一个ListActivity通过 a 填充的 a SimpleCursorAdapter(为此的代码初始化只调用一次)。正在使用的游标是一个类成员变量,因为我需要它在填充列表的方法之外。当从数据库中删除某些内容时,我需要它来重新查询数据库。但是在删除记录之前,这是用户操作并且可能需要一段时间才能发生,我是否应该同时停用光标?因为当我再次调用时它会再次激活.requery()。还是SimpleCursorAdapter因为光标不活动而停止工作?

编辑:我刚刚测试了这个,发现deactivate()设置光标适配器后我无法调用。如果光标未处于活动状态,则列表将为空,因此只要显示 ListActivity,它就需要保持活动状态。最后,我们应该让它StartManagingCursor处理它。或者新的CursorLoader.

  1. 我知道startManagingCursor/stopManagingCursor已被弃用,但我不是针对 Honeycomb(至少目前是这样),我现在不想处理新CursorLoader的。但是在上面的教程中,startManagingCursor到处都使用,但从stopManagingCursor不调用一次。为什么不?Android 是否以自己的方式处理这个问题?有什么情况我应该打电话stopManagingCursor吗?
0 投票
2 回答
2051 浏览

android - 我必须使用 Fragments 来获取 LoaderManager 吗?

根据一些文档,我可以在 Activity 或 Fragment 中使用 Loader,但兼容性包显示只有 FragmentActivity 具有 getLoaderManager() 方法。

由于旧的托管游标已被弃用,我们必须使用游标加载器。那么为什么要把这个数据管理功能与 UI 小部件的选择联系起来呢?对我来说完全是无稽之谈。

谢谢P。

0 投票
2 回答
8073 浏览

android - ListActivity 中的 getLoaderManager

我希望在 ListActivity 中实现 Loader,但该活动无法识别 getLoaderManager。

0 投票
1 回答
2441 浏览

android - 在 android 2.2 中使用光标适配器和内容提供程序的正确方法是什么

我很困惑,我需要你的帮助。我尝试按照 Virgil Dobjanschi 在 Google IO 2010 上的“开发 Android REST 客户端应用程序”讲座中给出的说明进行操作。不幸的是,我找不到在 Content Provider 和 Cursor Adapter 之间实现有效通信的方法。

我在这里遇到的问题与光标适配器有关,所以我们假设内容提供者一切正常。例如,让我们尝试使用 Contacts ContentProvider 而不是我自己的。我尝试了最简单的解决方案——任何 ContentProvider(假设为联系人,由 SDK 提供)和 SimpleCursorAdapter。问题是 SimpleCursorAdapter 包含来自 Contacts 的光标的构造函数已被弃用。文档说:

此构造函数已弃用。

不鼓励使用此选项,因为它会导致在应用程序的 UI 线程上执行游标查询,从而导致响应速度不佳甚至应用程序无响应错误。作为替代方案,将 LoaderManager 与 CursorLoader 一起使用。

我的想法是:“好吧,我不会使用它。我会尝试用 CursorLoader 代替 LoaderManager,因为他们正在建议我。” 所以我去LoaderManager 文档站点查找使用示例以及我发现了什么?使用 SimpleCursorAdapter 构造函数的完美示例。是的,我也想避免因为它已被弃用。

我能找到的所有教程都在使用这个已弃用的构造函数。谁能给我一个很好的答案,避免使用它的正确方法是什么?还是我太在乎它了?我只想学习好的做法...

0 投票
1 回答
1674 浏览

java - 使用 11 之前的 Loader em API 版本

我正在使用CursorAdapterand ContentProvider,并且我想使用CursorLoader,因此我将项目重新配置为以 API 11 为目标并将 min-sdk-ver 设置为 7。但是,当Activity调用Activity使用CursorLoader. 错误是NoClassDefFoundError通过传递的IllegalStateException

我的问题是,即使我们拥有相同的配置,我们是否可以在以前的 Android 版本中使用 Honeycomb API?

0 投票
1 回答
10069 浏览

android - 如何在 ListActivity 中获取 LoaderManager

我正在使用兼容性包在 API 级别 < 11 中实现 CursorLoader 根据文档和这个答案以及这个精彩的教程,我已经导入了支持包并实现了LoaderManager.LoaderCallbacks,但接下来我必须调用:

并且为此必须扩展FragmentActivity,然后从Activity Context调用,但我已经扩展了ListActivity,并想进行静态调用以获取LoaderManager,如下所示:

显然,这是一种让LoaderManager < 11 的方法,这就是文档所说的:

要管理您的片段和加载器,您必须使用 FragmentActivity.getSupportFragmentManager() 和 FragmentActivity.getSupportLoaderManager() 方法(而不是 getFragmentManager() 和 getLoaderManager() 方法)。

但它给出了这个编译时错误:

FragmentActivity 的代码getSupportLoaderManager() 在这里不是静态的,这解释了错误,但为什么 Doc 显示静态调用...我现在很困惑...

请帮忙!

0 投票
2 回答
2672 浏览

android - CursorAdapter 和 FLAG_REGISTER_CONTENT_OBSERVER

在我的 ListView Activity 中,使用 LoaderManager 管理光标并且还有一个自定义 CursorAdapter

注册 Adapter 时,会传递一个空游标,由 LoaderManager 管理

现在需要为此 CustomCursorAdapter 实现 SectionIndexer。我的问题是,在 CustomCursorAdapter 构造函数中,光标最初将为空,我怎么知道何时准备好光标。

有一个

可用于在 CursorAdapter 中获取光标的方法,但在哪个回调方法中我确定 LoaderManager 已完成对 Cursor 的数据加载准备好进行操作

谢谢

0 投票
3 回答
23439 浏览

android - 数据更改后 CursorLoader 不更新

我创建了一个小型应用程序,试图了解LoaderManagerand类的功能CursorLoader

我已经LoaderCallbacks<Cursor>在我的FragmentActivity-class 上实现了,一切正常,除了当我通过ContentResolver.update()or ContentResolver.insert()-methods 更新我的数据时,onLoadFinished()没有调用,因此我的数据没有更新。

我有一个自定义的 ContentProvider,我想知道问题是否出在我的 ContentProvider 上,没有通知数据已更改或其他原因。