база данных tabhost и listview sqlite вызывают утечку - PullRequest
0 голосов
/ 28 марта 2012

Я пытался найти решение моей проблемы уже в google и здесь на stackoverflow, однако ничто не могло ответить на мой вопрос.Я использую базу данных sqlite для заполнения списка.Кроме того, в верхней части списка есть вкладка, где можно переключиться на другую деятельность.При переключении на это действие и обратно, затем обратно в просмотр списка, обнаруживается утечка.Однако, что бы там ни было, очевидно, есть утечка.Может ли кто-нибудь помочь мне найти эту утечку?

Вот список действий:

@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();
    }

Таботивность довольно проста:

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);

Может ли кто-нибудь определить утечку?

Заранее спасибо за помощь.

1 Ответ

1 голос
/ 28 марта 2012

Можете ли вы получить исходный код contacts.class и входящий-входящий-класс-класс?

Проблема в том, что вы пытаетесь подключиться к БД дважды при переключении между вкладками (вы не закрываете соединение БД на первой вкладке).

У меня была эта проблема в моем проекте, когда у меня было 2 SlqHelpers до 1 дБ, и я использовал их одновременно.

...