Неопределенное исключение, выброшенное финализатором (будет удалено), Android - PullRequest
4 голосов
/ 07 февраля 2011

В logcat я нашел эти сообщения, мое приложение работает правильно (нет ошибок / нет исключений / и правильный результат), но почему эти сообщения появляются в журнале cat. Я закрыл все курсоры. И еще одна вещь, приложение работает немного медленно для отображения активности (какая активность указана в моем сообщении logcat), я думаю, что для генерации этих сообщений журнала требуется время. Какое решение для этого.

I/ActivityManager(   63): Starting activity: Intent { cmp=com.pankaj.myapp/.SelectedContactActivity (has extras) }
    D/dalvikvm(  251): GC freed 2584 objects / 174064 bytes in 139ms
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d2c688 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d2bf58 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d2b5a8 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d29af0 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d293c0 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d28a28 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d26f70 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d26808 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d25e60 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d24310 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d23be0 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d23238 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d21780 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d21028 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d20688 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d1ebd0 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d1e480 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d1dae0 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d1bfa0 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d1b760 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/dalvikvm(  251): Uncaught exception thrown by finalizer (will be discarded):
    I/dalvikvm(  251): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43d1ac40 on contacts_tags that has not been deactivated or closed
    I/dalvikvm(  251):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    I/dalvikvm(  251):  at dalvik.system.NativeStart.run(Native Method)
    I/ActivityManager(   63): Displayed activity com.pankaj.myapp/.SelectedContactActivity: 2245 ms (total 2245 ms)

Активность вызывающего абонента использует представление списка, и после нажатия элемента списка «SelectedContactActivity» вызывается действие.

Активность вызывающего абонента

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.contacts_list_item);
        SimpleAdapter contactAdapter = getAdapter(); // This method returns SimpleAdapter object 
       // Bind to our new adapter.
       setListAdapter(contactAdapter);
    }

protected void onListItemClick(ListView l, View view, int position, long id) {
        super.onListItemClick(l, view, position, id);

        Intent intent = new Intent().setClass(this, AddModifyTag.class);
        intent.putExtra("_id",contactInfo.get("_id"));
        intent.putExtra("name", contactInfo.get("name"));
        intent.putExtra("number", contactInfo.get("number"));
        intent.putExtra("position", position);
        this.startActivityForResult(intent, EDIT_CONTACT_TAGS);
    }

На вызываемой деятельности

public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
......
......
        Cursor tags;
        db.open();
        tags = db.getContactTags(contactID);
        startManagingCursor(tags);
        .......
        .......
        db.close();
}

1 Ответ

5 голосов
/ 07 февраля 2011

Я думаю, что вы получаете эту ошибку, потому что вы не закрыли Cursor в onStop() или onDestroy(). Попробуйте закрыть Cursor. Вы также можете использовать startManagingCursor() для вас Cursor, что поможет вам закрыть курсор на Android.

...