在Xamarin.Android中遇到断点时VS2013中的NullReferenceException

时间:2015-04-24 08:00:25

标签: c# android visual-studio-2013 xamarin nullreferenceexception

将Visual Studio的Xamarin.Android更新到最新的稳定版本后,我收到一个奇怪的错误。在调试模式下启动应用程序时,Visual Studio有时会抛出NullReferenceException,而不是预期的。这发生在

ThreadPool.QueueUserWorkItem(x => ContinueOnCreate());

在我的Activity的OnCreate方法中。但奇怪的是,当在上一行行上放置断点时,我立即得到

Unhandled Exception: 
System.NullReferenceException: Object reference not set to an instance of an object
一旦断点被​​击中,在Visual Studio中

。在这种情况下,有问题的行是对实例方法的简单方法调用:

AnimateWidgets();

...如果我还在此方法的第一个花括号上放置断点,则由于调用AnimateWidgets时抛出NullReferenceException,断点不会被命中。

如果我在活动的OnCreate方法的第一个花括号上放置一个断点,它会按预期命中,但是当单步执行时,我会在调用CookieManager.Instance.RemoveAllCookie的方法时获得类似的NullReferenceException。在

CookieSyncManager.CreateInstance(this);
CookieManager.Instance.RemoveAllCookie();
CookieSyncManager.Instance.Sync();

我猜这是Xamarin中的一个错误,但我想知道是否有人有类似的经历。我使用的是Xamarin版本3.9.547.0和Xamarin.Android版本4.20.2.1。

[编辑:调用CookieManager.Instance.RemoveAllCookie方法时会导致此问题。)

2 个答案:

答案 0 :(得分:0)

删除Android手机中的运行时。

我在低API版手机中解决了相同的情况。 当我在旧的API级别手机中使用多线程或异步方法时,会发生此问题。

答案 1 :(得分:0)

问题是由Android WebView的更新版本中的问题引起的,可能是由于错误地将信号转发到SIGSEGV信号处理程序引起的。它只发生在Debug版本中,而不是Release。

临时解决方法是通过进行"设置"降低设备上的WebView。 - > "应用" - > " Android系统WebView" - > "卸载更新"。使用版本39可以使用,但它也可以用于更高版本。

有关详细信息,请参阅

http://www.asus.com/zentalk/forum.php?mod=viewthread&tid=5919

https://bugzilla.xamarin.com/show_bug.cgi?id=29365

https://code.google.com/p/chromium/issues/detail?id=476831

非常感谢Xamarin的Jon Goldberger及时追踪这个问题。

[修改Jonathan Pryor has a workaround that doesn't require downgrading the WebView。我一直无法通过此修复解决问题,但您的里程可能会有所不同。还要感谢Jon Goldberger的链接]。