终结者抛出未捕获的异常:Google API Bug 还是三星内核 Bug?

23

在我的Galaxy Tab 2 (Samsung)上启动我的应用时,我一直收到这个错误。 我正在开发的应用程序非常复杂,很难追踪这个错误的来源。因此,我开始逐个剥离我的应用程序,并最终只保留一个地图视图应用程序,就像您可以在这里找到的那样。

在剥离之后,我只得到了一个纯粹的地图视图应用程序,没有覆盖层项目!所以我按照教程进行操作,直到第1部分第9点为止。

这是MapView Activity:

package com.****.googlemapstutorial;

import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends MapActivity 
{

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    MapView mapView = (MapView) findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

@Override
protected boolean isRouteDisplayed() {
    return false;
}
}

我真的被难住了!

有人有建议吗?

The error:
10-28 21:09:22.872: E/System(16840): Uncaught exception thrown by finalizer
10-28 21:09:22.872: E/System(16840): java.lang.IllegalStateException: Binder has been finalized!
10-28 21:09:22.872: E/System(16840): at android.os.BinderProxy.transact(Native Method)
10-28 21:09:22.872: E/System(16840): at android.database.BulkCursorProxy.close(BulkCursorNative.java:288)
10-28 21:09:22.872: E/System(16840): at android.database.BulkCursorToCursorAdaptor.close(BulkCursorToCursorAdaptor.java:133)
10-28 21:09:22.872: E/System(16840): at android.database.CursorWrapper.close(CursorWrapper.java:49)
10-28 21:09:22.872: E/System(16840): at android.content.ContentResolver$CursorWrapperInner.close(ContentResolver.java:1591)
10-28 21:09:22.872: E/System(16840): at android.content.ContentResolver$CursorWrapperInner.finalize(ContentResolver.java:1604)
10-28 21:09:22.872: E/System(16840): at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182)
10-28 21:09:22.872: E/System(16840): at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
10-28 21:09:22.872: E/System(16840): at java.lang.Thread.run(Thread.java:856)

3
你能否确定你没有在应用程序的某个地方忘记关闭一个“Cursor”? - tolgap
似乎是这个的重复:http://stackoverflow.com/questions/12158228/uncaught-exception-thrown-by-finalizer - Phil
问题似乎是设备或 Android 版本特定的:在运行 Android 4.0.4 的 Samsung Galaxy SII 上运行此代码只会生成一个警告:10-29 14:19:46.251: W/CursorWrapperInner(29221): Cursor finalized without prior close()。 - WiZarD
你可以从这个问题中获得一些帮助:http://stackoverflow.com/questions/11884344/map-view-in-tab-layout-throwing-java-lang-illegalstateexception-binder-has-be - Aditya Pratap Singh
或许你已经关闭了游标,但是之后继续使用它了? - Edward Falk
你使用的是哪个版本的安卓? - Neil Townsend
4个回答

1
问题并不完全与设备或Android版本有关。在显示错误的设备上启用了Strict Mode。此外,在尝试关闭数据库之前,需要关闭光标。

1

0

尝试在后台线程中运行您的代码。此外,请再次更新您的SDK管理器,SDK中的额外时间。


0

未捕获的异常只会在您没有将该代码块放置在try catch中时出现。根据我的经验,像这样的行 "" CursorWrapper.close(CursorWrapper.java:49)"" 将告诉您创建问题的文件和文件行,因此只需转到该特定文件的那一行并将其包围在try catch中即可。我认为您正在关闭未使用(空)游标,因此会出现此异常。或者做一件事情...给我所有的.java类名以及显示的完整错误。我一定会解决:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接