目前我控制我的光标,如下所示。我想知道使用startManagingCursor()的好处是什么。目前我有很多游标,每个人都知道,然后得到一个与他们有关的错误。如果不是更好的做法,这会有益吗。
Cursor c = db.rawQuery("GENERIC QUERY" , null);
c.moveToFirst();
numval = c.getInt(c.getColumnIndex("_id"));
c.close();
答案 0 :(得分:1)
首先,startManagingCursor是deperecated API http://developer.android.com/reference/android/app/Activity.html#startManagingCursor(android.database.Cursor)
现在我们必须使用带有LoaderManager的CursorLoader类。为了回答你的问题,如果活动正在管理光标,那么它可以在屏幕方向发生时进行优化。而活动通过自己的生命周期来处理游标的生命周期。以下是Android doc的代码片段。
This method allows the activity to take care of managing the given Cursor's lifecycle for you based on the activity's lifecycle. That is, when the activity is stopped it will automatically call deactivate() on the given Cursor, and when it is later restarted it will call requery() for you. When the activity is destroyed, all managed Cursors will be closed automatically
答案 1 :(得分:0)
startManagingCursor将您的游标生命周期与您的Activity生命周期联系起来。这包括在您的活动恢复时自动重新查询。我倾向于避免使用它,因为我不一定希望每次重新启动活动时都会重新执行查询。
就最佳实践而言,如果您希望在活动暂停时更新数据库,则可能会更有意义,但即便如此,我仍然不能管理自己的光标。我也希望短时间保持游标打开,所以你的样本与我倾向于使用的模式相匹配。