"Unopened exception thrown by the finalizer" when opening MapActivity

I have these lines in my code:

// create tab4 intent = new Intent(this, ActWhereAmI.class) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); tabspecWhereAmI = tabHost .newTabSpec("tab4") .setIndicator(Utilities.prepareTabView(this,"where am I")) .setContent(intent); tabHost.addTab(tabspecWhereAmI); public static View prepareTabView(Context context, String text) { View view = LayoutInflater.from(context).inflate( R.layout.tab_indicator, null); TextView tv = (TextView) view.findViewById(R.id.tabIndicatorTextView); tv.setText(text); return view; } 

When the application launches the string tabHost.addTab(tabspecWhereAmI); , I get the following error only in LogCat, and the program starts without problems:

 10-17 13:38:01.164: W/MapActivity(4815): Recycling dispatcher android_maps_conflict_a voidance.com.google.googlenav.datarequest.DataRequestDispatcher@ 413c8658 10-17 13:38:01.171: V/MapActivity(4815): Recycling map object. 10-17 13:38:01.335: W/MapActivity(4815): Recycling dispatcher android_maps_conflict_a voidance.com.google.googlenav.datarequest.DataRequestDispatcher@ 413c8658 10-17 13:38:01.335: V/MapActivity(4815): Recycling map object. 10-17 13:38:01.554: D/dalvikvm(4815): GC_CONCURRENT freed 776K, 23% free 10286K/13255K, paused 2ms+7ms 10-17 13:38:01.554: E/System(4815): Uncaught exception thrown by finalizer 10-17 13:38:01.554: E/System(4815): java.lang.IllegalStateException: Binder has been finalized! 10-17 13:38:01.554: E/System(4815): at android.os.BinderProxy.transact(Native Method) 10-17 13:38:01.554: E/System(4815): at android.database.BulkCursorProxy.close(BulkCursorNative.java:288) 10-17 13:38:01.554: E/System(4815): at android.database.BulkCursorToCursorAdaptor.close(BulkCursorToCursorAdaptor.java:133) 10-17 13:38:01.554: E/System(4815): at android.database.CursorWrapper.close(CursorWrapper.java:49) 10-17 13:38:01.554: E/System(4815): at android.content.ContentResolver$CursorWrapperInner.close(ContentResolver.java:1591) 10-17 13:38:01.554: E/System(4815): at android.content.ContentResolver$CursorWrapperInner.finalize(ContentResolver.java:1604) 10-17 13:38:01.554: E/System(4815): at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182) 10-17 13:38:01.554: E/System(4815): at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168) 10-17 13:38:01.554: E/System(4815): at java.lang.Thread.run(Thread.java:856) 10-17 13:38:01.554: E/System(4815): Uncaught exception thrown by finalizer 10-17 13:38:01.554: E/System(4815): java.lang.IllegalStateException: Binder has been finalized! 10-17 13:38:01.554: E/System(4815): at android.os.BinderProxy.transact(Native Method) 10-17 13:38:01.554: E/System(4815): at android.database.BulkCursorProxy.close(BulkCursorNative.java:288) 10-17 13:38:01.554: E/System(4815): at android.database.BulkCursorToCursorAdaptor.close(BulkCursorToCursorAdaptor.java:133) 10-17 13:38:01.554: E/System(4815): at android.database.CursorWrapper.close(CursorWrapper.java:49) 10-17 13:38:01.554: E/System(4815): at android.content.ContentResolver$CursorWrapperInner.close(ContentResolver.java:1591) 10-17 13:38:01.554: E/System(4815): at android.content.ContentResolver$CursorWrapperInner.finalize(ContentResolver.java:1604) 10-17 13:38:01.554: E/System(4815): at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182) 10-17 13:38:01.554: E/System(4815): at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168) 10-17 13:38:01.554: E/System(4815): at java.lang.Thread.run(Thread.java:856) 

This exception occurs before the onCreate(...) ActWhereAmI . My problem is similar to this question: Do not throw exception thrown by finalizer

Why am I getting this error and how to solve it?

+7
source share
3 answers

Are you doing something related to db? It almost looks like the action that the DB stuff does closes the cursor (manually or automatically) and then tries to do something with it in finalize () or that the cursor closes with Android OS.

In case No. 2, this may mean that you may need to manually close the cursor. If so, but if you need to open an action, consider reopening / closing it in onResume / onPause or onStart / onStart

Someone else said that it could be because you are trying to open two of them at the same time.

+4
source

This has something to do with Cursor in onStop() or onDestroy() . You can call it by calling closeTab() or closeAllTabs() .

Hope this helps.

+1
source

Remember to close the cursor as soon as you finish the cursor before the application moves on to another action.

+1
source

All Articles