Managed Cursor

  • Antworten:3
Mac Systems
  • Forum-Beiträge: 1.727

11.04.2010, 14:24:06 via Website

Hallo,

folgender Code kann recht oft durchlaufen werden:

1@Override
2 public final void onItemSelected(final AdapterView<?> parent, final View view, final int position,
3 final long _id)
4 {
5 final ISpotDAO dao = DAOFactory.getSpotDAO(SpotSelectionActivity.this);
6 final Spinner spotSpinner = (Spinner) findViewById(R.id.stationSpinner);
7 //
8 final String countryID = getID(R.id.countrySpinner);
9 final String regionID = getID(R.id.regionSpinner);
10 final String continentID = getID(R.id.continentSpinner);
11
12 final Cursor c = dao.fetchBy(continentID, countryID, regionID);
13 startManagingCursor(c);
14 final String[] from = new String[]
15 { "name", "spotid" };
16 final int[] to = new int[]
17 { android.R.id.text1, android.R.id.text2 };
18 final SimpleCursorAdapter shows = new SimpleCursorAdapter(SpotSelectionActivity.this,
19 android.R.layout.simple_spinner_item, c, from, to);
20
21 spotSpinner.setAdapter(shows);
22 shows.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
23
24 }
Sollte ich nun den jeweils letzten Cursor dennoch schließen, ich dachte das macht bereits die Methode startManagingCursor für mich ? Ich bekomme immer mal wieder die Meldung im Logcat:

SQLiteDatabase created and never closed

zu sehen.

Thx,
Mac

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

11.04.2010, 14:34:58 via Website

Die Methode startManagingCursor handelt den Lifecycle Deines Cursors im Rahmen des Lifecycles Deiner Activity. D.h. wenn der Lifecycle Deiner Activity beendet wird, DANN und nur dann ruft diese Art des Cursormanagements auch ein deactivate() auf.

Nachzulesen unter: http://developer.android.com/reference/android/app/Activity.html#startManagingCursor(android.database.Cursor)

lg Voss

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

11.04.2010, 15:04:54 via Website

Jep, du hast recht. Das Problem liegt in der Implementierung meiner DAOs ;)
Ich fixe das gerade...hätte Ich mal eher tun sollen :/

- Mac

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

11.04.2010, 17:57:59 via Website

So ich hab das fixen können, letztendlich ist der gröbste Fehler gewesen die DB nie in der onStop Methode zu schließen.
Ich hab mir dafür entsprechende Activitys geschrieben die das erledigen indem sie den DAOs das mitteilen.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten