【问题标题】:Xamarin.Forms android error: Java.Interop.JniEnvironmentAnimators may only be run on Looper threadsXamarin.Forms android 错误:Java.Interop.JniEnvironmentAnimators 只能在 Looper 线程上运行
【发布时间】:2017-09-15 14:37:09
【问题描述】:

我们有一个运行良好的 Xamarin.Forms 应用程序,但我们已经开始在 Insights 中收到以下报告:

Java.Interop.JniEnvironmentAnimators 只能在 Looper 线程上运行

System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw():0 Java.Interop.JniEnvironment.InstanceMethods.CallVoidMethod(JniObjectReference 实例,JniMethodInfo 方法,JniArgumentValue* args):0 Java.Interop.JniPeerMembers.JniInstanceMethods.InvokeVirtualVoidMethod(字符串编码成员,IJavaPeerable self,JniArgumentValue* 参数):0 Android.Views.View.set_Enabled(bool 值):0 Xamarin.Forms.Platform.Android.ButtonRenderer.UpdateEnabled():0 Xamarin.Forms.Platform.Android.ButtonRenderer.OnElementPropertyChanged(对象发送者,PropertyChangedEventArgs e):0 .invoke_void_object_PropertyChangedEventArgs(对象,PropertyChangedEventArgs)(包装委托调用) Xamarin.Forms.BindableObject.OnPropertyChanged(字符串属性名称):0 Xamarin.Forms.Element.OnPropertyChanged(字符串属性名称):0 Xamarin.Forms.BindableObject.SetValueActual(BindableProperty 属性,BindableObject.BindablePropertyContext 上下文,对象值,布尔当前应用,BindableObject.SetValueFlags 属性,布尔静默):0 Xamarin.Forms.BindableObject.SetValueCore(BindableProperty 属性,对象值,BindableObject.SetValueFlags 属性,BindableObject.SetValuePrivateFlags privateAttributes):0 Xamarin.Forms.BindableObject.SetValueCore(BindableProperty 属性,对象值,BindableObject.SetValueFlags 属性):0 Xamarin.Forms.Button.set_IsEnabledCore(bool value):0 Xamarin.Forms.Button.CommandCanExecuteChanged(对象发送者,EventArgs eventArgs):0 .invoke_void_object_EventArgs(object, EventArgs)(包装委托调用) Xamarin.Forms.Command.ChangeCanExecute():0 Musterd.UI.PageModels.SelectMusterPointPageModel.set_OkButtonEnabled(bool value):0

这是在运行 Android N 的三星 S7 上。

应用正在运行 Xamarin.Forms 2.3.4.270

它看起来在 Android 下的 Xamarin.Forms 中相当深入。有人看过这个和/或有什么建议吗?

【问题讨论】:

  • 不完全例外,但我在 2.3.4 上也崩溃了。特别是 Java stackoverflow 异常非常烦人,在 2.3.3 中没有发生,看起来 xamarin 有一些重大变化

标签: android xamarin.forms


【解决方案1】:

我发现我们正在调用 Command 的 ChangeCanExecute 方法来响应正在处理的事件,但我们不在 UI 线程上。

更改为在 UI 线程上运行解决了问题。

【讨论】:

    猜你喜欢
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2012-01-16
    • 2011-12-08
    • 1970-01-01
    • 2016-03-19
    相关资源
    最近更新 更多