Nicht genügend Speicher beim Zuweisen von Cursorn

Ich habe ein Speicherproblem, das ich nicht herausfinden kann. Ich habe eine Klasse, die alle Aufgaben zum Abrufen von Datenbanken erledigt. Der Fehler, den ich habe, ist der folgende:

android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed. # Open Cursors=733 (# cursors opened by this proc=733)

Der Speicherzuordnungsfehler tritt auf, wenn ich das tue:

mDatabaseInterface.getGraphForLevel(level);

Ich weiß, dass es ein Leck ist, weil ich diese Methode ungefähr alle 2,5 Sekunden aufrufe und die 5 oder 6 ersten Aufrufe leicht durchgehen. Hier sind die Methoden in meiner DatabaseInterface-Klasse:

public Graph getGraphForLevel(Level level) {

    //get the nodes
    ArrayList<Node> nodes = new ArrayList<Node>(Arrays.asList(this.getNodesWithLevel(level)));
    //get the edges
    ArrayList<Edge> edges = new ArrayList<Edge>(Arrays.asList(this.getEdgesWithNodes(nodes)));

    return new Graph(nodes, edges);
}

public Node[] getNodesWithLevel(Level level) {

    List<Node> l = new ArrayList<Node>();

    Cursor cursor = mDatabase.query("nodes", null, 
            "level = " + wrapSql(String.valueOf(level.getId())), null, null, null, null);

    while (cursor.moveToNext()) {
        l.add(parseNodeFromCursor(cursor));
    }

    cursor.close();

    return l.toArray(new Node[l.size()]);       
}

private Node parseNodeFromCursor(Cursor cursor) {

    Level l = getLevelWithId(cursor.getInt(2));

    return new Node(cursor.getInt(0), cursor.getString(1), l, 
            cursor.getInt(4), cursor.getInt(5));
}

Ich habe viele Methoden, die sich gegenseitig aufrufen, aber ich weiß, dass es kein Rekursionsproblem ist, da diese Klasse in einer anderen App funktioniert. Meine Hauptfrage ist, warum nichtcursor.close() Den Cursor befreien? Wenn ich etwas mache wie:

cursor = mDatabase.query(...);
cursor.moveToNext();
Node node = new Node(cursor.getInt());
cursor.close();

Wird der Cursor in diesem Fall beibehalten?

Danke im Voraus.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage