Java 使用StartMagingCursor()的优缺点是什么

Java 使用StartMagingCursor()的优缺点是什么,java,android,Java,Android,此时,我控制我的光标,如下所示。不过,我想知道使用startManagingCursor()的好处是什么。就目前而言,我有很多游标,每一个都知道,然后得到一个与它们有关的错误。如果没有更好的实践,这是否有益 Cursor c = db.rawQuery("GENERIC QUERY" , null); c.moveToFirst(); numval = c.getInt(c.getColumnIndex("_id")); c.close(); 首先,sta

此时,我控制我的光标,如下所示。不过,我想知道使用startManagingCursor()的好处是什么。就目前而言,我有很多游标,每一个都知道,然后得到一个与它们有关的错误。如果没有更好的实践,这是否有益

Cursor c = db.rawQuery("GENERIC QUERY" , null);
c.moveToFirst();
numval = c.getInt(c.getColumnIndex("_id"));                   
c.close();

首先,startManagingCursor是由API定义的 )

现在我们必须在LoaderManager中使用CursorLoader类。回答您的问题,如果活动正在管理光标,那么它可以在屏幕方向发生类似情况时进行优化。Activity负责游标的生命周期和它自己的生命周期。下面是android文档的代码片段


此方法允许活动根据活动的生命周期为您管理给定游标的生命周期。也就是说,当活动停止时,它将自动调用给定游标上的deactivate(),当它稍后重新启动时,它将为您调用requery()。当活动被销毁时,所有托管游标都将自动关闭

首先,startManagingCursor将被解除API )

现在我们必须在LoaderManager中使用CursorLoader类。回答您的问题,如果活动正在管理光标,那么它可以在屏幕方向发生类似情况时进行优化。Activity负责游标的生命周期和它自己的生命周期。下面是android文档的代码片段


此方法允许活动根据活动的生命周期为您管理给定游标的生命周期。也就是说,当活动停止时,它将自动调用给定游标上的deactivate(),当它稍后重新启动时,它将为您调用requery()。当活动被销毁时,所有托管游标将自动关闭

开始管理游标将游标生命周期与活动生命周期绑定。这包括在活动恢复时自动重新查询。我倾向于避免使用它,因为我不一定希望每次活动重新启动时都重新执行查询


就最佳实践而言,如果您希望在活动暂停时更新数据库,但即使如此,我仍然倾向于管理自己的游标,那么这可能更有意义。我还更喜欢短时间内保持游标打开,以便您的示例与我倾向于使用的模式相匹配。

开始管理游标将游标生命周期与活动生命周期联系起来。这包括在活动恢复时自动重新查询。我倾向于避免使用它,因为我不一定希望每次活动重新启动时都重新执行查询

就最佳实践而言,如果您希望在活动暂停时更新数据库,但即使如此,我仍然倾向于管理自己的游标,那么这可能更有意义。我还喜欢让游标在短时间内保持打开状态,因此您的示例与我倾向于使用的模式相匹配