2012-01-14 52 views

回答

1

FragmentActivity被破坏,就应该对所有Loader情况下,它创建的,这将在Loader实现中调用onReset(),调用reset()SQLiteCursorLoader电话close()任何优秀Cursor

请注意,当活动被破坏时会发生这种情况。看起来没有Loader等同于当活动暂停时去激活Cursor的管理Cursor概念。这太遗憾了,因为这是一个很好的堆管理功能,我会思考如何最好地支持这一点。

如果您发现证据表明某些内容正在泄漏,file an issue in the LoaderEx project将提供有关如何重现错误的详细信息。

+0

+1,但是如果我理解正确的话,'Loader'的一个优点就是数据(在这种情况下为'Cursor')在Activity被破坏后保留 - 例如配置更改。这是可能的,因为'LoaderManager'的生命与'Activity'解耦,可能会跨越(请纠正我,如果我错了)。但是,如果我们关闭所有'onDestroy()',这就不再成立。那么为什么不使用简单的'AsyncTask'呢?如何跟踪所有创建的'Loader'?那么关闭“SQLiteOpenHelper”呢?这也很重要 – Raffaele 2012-10-11 00:34:18

+0

@Raffaele:'FragmentActivity'(和API Level 11+的基线“活动”),能够正确处理配置更改。在这个答案中,当我写下“被摧毁”时,我的意思是“最后一次被毁坏,而不是由于配置改变”。我对任何混淆抱歉。 – CommonsWare 2012-10-11 09:55:28

+0

什么是与此*真正的破坏*相关的回调?需要它来关闭装载机。还需要确保在发生这种情况时没有'Loader'运行。此外,'LoaderManager' API没有列出init'ed'Loader',因此必须手工跟踪它们,或者只是初始化并关闭每个可能的加载器,但这种方法仅适用于* fixed *装载机,并且不能支持按需装载* – Raffaele 2012-10-11 10:42:34

相关问题