【问题标题】:android cursor in infinite loop无限循环中的android光标
【发布时间】:2012-08-02 13:44:28
【问题描述】:

我有来自游标加载器的游标。问题是,如果我尝试通过该光标移动,它不会向前移动并陷入无限循环。

  public void onLoadFinished(Loader<Cursor> loader, final Cursor cursor) {
    Log.d(TAG, "CALLED onLoadFinished");
    ...
    else if(loader.getId() == LOADER_1)
    {
        while(cursor.moveToFirst())
        {
              Log.d(TAG, "LOOPING");
              cursor.moveToNext();
        }
    }
 }

【问题讨论】:

  • 好主意让我看看
  • 我删除了所有光标的使用,只是离开了普通循环,但仍然卡住了

标签: android android-asynctask android-cursor android-cursorloader


【解决方案1】:

您当前的while 循环将不起作用。现在您将光标移动到while 条件中的第一个位置,然后在while 块内将光标推到下一个位置。随着while 块的完成,将再次测试条件,因此将再次调用cursor.moveToFirst()。这将一次又一次地继续。基本上你会在一个无限循环中从光标的第一个位置移动到第二个位置。

循环应该是这样的:

while(cursor.moveToNext()) {
     Log.d(TAG, "LOOPING");
     // do other stuff 
     // each time you'll have a new row from the cursor
}

【讨论】:

  • 这就是我的做法while ((currentLine != null) || (lineFirstIteration)) 它工作了很长时间,但是当我的狡猾代码导致无限循环时,我转换为您的正确方法并且它完美地工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 2012-01-20
  • 2011-05-11
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
相关资源
最近更新 更多