Android Cursor - moveToNext() doesnt seem to go to end of cursor
Why doesnt my Android Cursor go all the way to the end of the original "promise"??

My **cursor.getCount()** differs from my last **cursor.getPosition()**. Check my while loop! It is all I do with it!

*Notes*: 
1. it is about querying the Contacts content provider (android api >5)
2. I display only the esential code


    Cursor cursor = mContext.getContentResolver().query(mUri, mProjections, null, null, null);
    Logger.d(TAG, "***  cursor.getCount(): "+cursor.getCount());
    while (cursor.moveToNext()) {
        Logger.d(TAG, "| position: "+cursor.getPosition());
        processMainCursor(serializer, cursor);
    }
    cursor.close();

processMainCursor() will display data from cursor + do another queries: one 4 phones, one 4 emails, one 4 IM accounts:

    void processMainCursor(XmlSerializer serializer, Cursor main_cursor) {
         writeCursorData(serializer, main_cursor); //writes cursor data, column by column
         writePhoneEntities(serializer, main_cursor);
         writeEmailEntities(serializer, main_cursor);
         writeIMEntities(serializer, main_cursor);
    }

In none of my `writeXXX` methods do i close my `main_cursor` or move next!!!..have to trust me on that.. i just do a new query, print data & close that cursor

So statistics:

 - cursor.getCount() = 695 (**always**)
 - commenting *writePhoneEntities, writeEmailEntities, writeIMEntities*: cursor.getCount() = 
last cursor.getPosition() = 695 (**so correct!**)
 - leaving one/two/all of my *writeXEntities* shows randomness; example: leaving them all: 
last cursor.getPosition() sometimes displays 254, 257, 253, etc; leaving just phone & IM: 514, 510, 511, etc (**so different RUN -> different last cursor.getPosition() VALUE**)

So oppinions.. Why is that? Is it memory related?

*Update*: 
Leaving any of my writeXEntities displays at the end in logcat:
*Removing dead content provider: contacts*
Android Cursor - moveToNext() doesnt seem to go to end of cursor
===

Why doesnt my Android Cursor go all the way to the end of the original "promise"??

My **cursor.getCount()** differs from my last **cursor.getPosition()**. Check my while loop! It is all I do with it!

*Notes*: 
1. it is about querying the Contacts content provider (android api >5)
2. I display only the esential code


    Cursor cursor = mContext.getContentResolver().query(mUri, mProjections, null, null, null);
    Logger.d(TAG, "***  cursor.getCount(): "+cursor.getCount());
    while (cursor.moveToNext()) {
        Logger.d(TAG, "| position: "+cursor.getPosition());
        processMainCursor(serializer, cursor);
    }
    cursor.close();

processMainCursor() will display data from cursor + do another queries: one 4 phones, one 4 emails, one 4 IM accounts:

    void processMainCursor(XmlSerializer serializer, Cursor main_cursor) {
         writeCursorData(serializer, main_cursor); //writes cursor data, column by column
         writePhoneEntities(serializer, main_cursor);
         writeEmailEntities(serializer, main_cursor);
         writeIMEntities(serializer, main_cursor);
    }

In none of my `writeXXX` methods do i close my `main_cursor` or move next!!!..have to trust me on that.. i just do a new query, print data & close that cursor

So statistics:

 - cursor.getCount() = 695 (**always**)
 - commenting *writePhoneEntities, writeEmailEntities, writeIMEntities*: cursor.getCount() = 
last cursor.getPosition() = 695 (**so correct!**)
 - leaving one/two/all of my *writeXEntities* shows randomness; example: leaving them all: 
last cursor.getPosition() sometimes displays 254, 257, 253, etc; leaving just phone & IM: 514, 510, 511, etc (**so different RUN -> different last cursor.getPosition() VALUE**)

So oppinions.. Why is that? Is it memory related?

*Update*: 
Leaving any of my writeXEntities displays at the end in logcat:
*Removing dead content provider: contacts*