Ich habe versucht, eine Lösung für mein Problem bereits in Google und hier auf stackoverflow, aber nichts konnte meine Frage zu beantworten. Ich verwende eine SQLite-Datenbank, um eine Listenansicht zu füllen. Oben auf der Listenansicht befindet sich auch ein Tabhost, wo man zu einer anderen Aktivität wechseln kann. Beim Wechsel zu dieser Aktivität und dann zurück zur Listview wird ein Leck gefunden. Wie auch immer es aussieht, es gibt anscheinend ein Leck. Kann mir jemand helfen, dieses Leck zu finden? HierTabhost und Listview SQL-Datenbank verursachen Leck
ist die Listenansicht Aktivität:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.contacts);
contactlist = (ListView) findViewById(R.id.list);
entry.open();
c = entry.getData();
startManagingCursor(c);
String[] from = new String[] {"_id", "firstname", "lastname"};
int[] to = new int[] {R.id.iVPI, R.id.tvfirstName, R.id.tvlastName};
adapter = new MySimpleCursorAdapter(this, R.layout.contacts_list_item, c, from, to);
contactlist.setAdapter(adapter);
contactlist.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position, long id) {
// TODO Auto-generated method stub
Intent intent = new Intent(contacts.this, contactsdetails.class);
Cursor cursor = (Cursor) adapter.getItem(position);
intent.putExtra("ID", cursor.getInt(cursor.getColumnIndex("_id")));
c.close();
startActivity(intent);
}
});
}
protected void onStart() {
super.onStart();
entry.open();
}
protected void onPause() {
super.onPause();
entry.close();
}
protected void onStop() {
super.onStop();
entry.close();
}
protected void onDestroy() {
super.onDestroy();
entry.close();
}
Die tabhostactivity ist ganz einfach:
th = getTabHost();
th.addTab(th.newTabSpec("tag1").setIndicator("Contacts", getResources().getDrawable(R.drawable.book)).setContent(new Intent(this, contacts.class)));
th.addTab(th.newTabSpec("tag2").setIndicator("Profile", getResources().getDrawable(R.drawable.mailbox)).setContent(new Intent(this, incomingcallpopup.class)));
th.setCurrentTab(0);
Kann jemand das Leck erkennen?
Vielen Dank im Voraus für Sie helfen.
Wie wird das Leck gemeldet? Versuchen Sie das Memory Analyzer Tool Plugin für Eclipse, es wird Ihnen sagen, welches Objekt zusammen mit viel mehr Daten durchgesickert ist. – Bondax