Xamarin caused by: android.runtime.JavaProxyThrowable: System.NullReferenceException: Object reference not set to an instance of an object at System.Threading.Tasks.RangeWorker.FindNewWork (System.Int64& nFromInclusiveLocal,System.Int64& nToExclusiveLocal) [0x00000] in <8f1acca5a43d45c5b8d35add5a11806a>:0 at System.Threading.Tasks.RangeWorker.FindNewWork32 (System.Int32& nFromInclusiveLocal32,System.Int32& nToExclusiveLocal32) [0x00000] in <8f1acca5a43d45c5b8d35add5a11806a>:0 at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () <0xec919968 + 0x00033> in <8f1acca5a43d45c5b8d35add5a11806a>:0
我无法弄清楚导致此异常的原因,因为堆栈跟踪仅包含.net代码.我查看了框架的源代码,看看我是否能理解它,但无济于事.
我也在我最喜欢的搜索引擎中尝试了很多不同的搜索,但没有发现任何关于类似问题的帖子/文章.
从与这些崩溃相关的数据来看,它似乎只是在三星设备上发生的问题(S8,S8和Note8).我无法100%确定它不会影响其他设备,但我只有那些崩溃报告.
知道什么可能导致那些崩溃吗?我是否在使用线程做错了,可能还有取消令牌?我有没有正确处理的条件?
任何有助于进一步解决这个问题的帮助都会受到欢迎.
谢谢
编辑:
我知道没有太多要做但是因为这是我在HockeyApp中获得的唯一堆栈跟踪而我无法复制,我不知道是什么代码导致了这一点.
我正在寻找的是更多关于什么可能导致Mono线程代码在我自己不管理线程时具有空引用异常的线索.或者这个堆栈跟踪只是一个红色的鲱鱼,我需要在其他地方寻找?
解决方法
This Microsoft paper显示了如何将应用程序定位到一个或多个Android支持的cpu架构.您可能需要定位多个平台:
To target multiple cpu architectures,you can select more than one ABI
(at the expense of larger APK file size). You can use the Generate one
package (.apk) per selected ABI option (described in Set Packaging
Properties) to create a separate APK for each supported architecture.You do not have to select arm64-v8a or x86_64 to target 64-bit devices; 64-bit support is not required to run your app on 64-bit hardware. For example,64-bit ARM devices (such as the Nexus 9) can run apps configured for armeabi-v7a. The primary advantage of enabling 64-bit support is to make it possible for your app to address more memory.