2016-06-02 8 views
2

IAM mit MVVMCross 4.1.6 (versucht auf 4.1.4 aswell) und ein Problem mit einer Eigenschaft eines Elements in einer beobachtbaren Sammlung. Es tritt auf, wenn ich wiederholt zwischen meinen 2 Tabs jeweils mit einem MvxRecyclerView und einer Liste von Elementen, die miteinander verbunden sind, wechseln. Im Grunde ist eine die normale Liste und eine ist eine Favoritenliste.MvxNotifyPropertyChanged Anwendung Absturz auf SetProperty

Diese beiden Listen durch die Daten im Hintergrund vorbereitet werden, wenn das Fragment durch dieses Verfahren zeigt bis unsicher, dass alle neuen Daten angezeigt wird:

private void updateChannels() 
{ 
    foreach (var category in CalCategories) 
    { 
     if (string.IsNullOrEmpty(m_searchString)) 
     { 
      var channels = category.Channels.Where(o => o.Task == null).ToList(); 
      if (category.Count != channels.Count) 
      { 
       category.Count = channels.Count; 
      } 

      if (channels.Count > 0) 
      { 
       if (!CalChannelList.Contains(category)) 
       { 
        CalChannelList.Add(category); 
       } 
       if (category.Expanded) 
       { 
        foreach (var channel in channels) 
        { 
         if (!CalChannelList.Contains(channel)) 
         { 
          CalChannelList.Add(channel); 
         } 
        } 
       } 
      } 
     } 
     else 
     { 
      var channels = category.Channels.Where(o => o.Name.Contains(SearchString) && o.Task == null).ToList(); 
      if (category.Count != channels.Count) 
      { 
       category.Count = channels.Count; 
      } 
      if (channels.Count > 0) 
      { 
       if (!CalChannelList.Contains(category)) 
       { 
        CalChannelList.Add(category); 
       } 
       if (category.Expanded) 
       { 
        foreach (var channel in channels) 
        { 
         if (!CalChannelList.Contains(channel)) 
         { 
          CalChannelList.Add(channel); 
         } 
        } 
       } 
      } 
     } 
    } 
} 

Der Fehler nach einer gewissen Zeit kommt es zu Einfach zwischen den Tabs hin- und herschalten und immer an der Zeile passieren, wenn category.Count gesetzt wird.

Stacktrace: 

    at <unknown> <0xffffffff> 
    at (wrapper managed-to-native) object.wrapper_native_0xb4ecb6f9 (intptr,intptr,intptr,Android.Runtime.JValue*) <IL 0x0002a, 0xffffffff> 
    at (wrapper delegate-invoke) <Module>.invoke_void_intptr_intptr_intptr_JValue* (intptr,intptr,intptr,Android.Runtime.JValue*) <IL 0x0007d, 0xffffffff> 
    at Android.Runtime.JNIEnv.CallVoidMethod (intptr,intptr,Android.Runtime.JValue*) [0x00040] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:567 
    at Android.Widget.TextView.set_TextFormatted (Java.Lang.ICharSequence) [0x0004b] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.Widget.TextView.cs:3237 
    at Android.Widget.TextView.set_Text (string) [0x00013] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.Widget.TextView.cs:3248 
    at MvvmCross.Binding.Droid.Target.MvxTextViewTextTargetBinding.SetValueImpl (object,object) <IL 0x0000c, 0x000ab> 
    at MvvmCross.Binding.Bindings.Target.MvxConvertingTargetBinding.SetValue (object) [0x00088] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\Target\MvxConvertingTargetBinding.cs:61 
    at MvvmCross.Binding.Bindings.MvxFullBinding.UpdateTargetFromSource (object) [0x00024] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\MvxFullBinding.cs:156 
    at MvvmCross.Binding.Bindings.MvxFullBinding.<CreateSourceBinding>b__15_0 (object,System.EventArgs) [0x0000c] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\MvxFullBinding.cs:85 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxSourceStep.SendSourcePropertyChanged() [0x00006] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxSourceStep.cs:119 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxCombinerSourceStep.SubStepOnChanged (object,System.EventArgs) [0x00000] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxCombinerSourceStep.cs:107 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxSourceStep.SendSourcePropertyChanged() [0x00006] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxSourceStep.cs:119 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxCombinerSourceStep.SubStepOnChanged (object,System.EventArgs) [0x00000] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxCombinerSourceStep.cs:107 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxSourceStep.SendSourcePropertyChanged() [0x00006] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxSourceStep.cs:119 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxCombinerSourceStep.SubStepOnChanged (object,System.EventArgs) [0x00000] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxCombinerSourceStep.cs:107 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxSourceStep.SendSourcePropertyChanged() [0x00006] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxSourceStep.cs:119 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxPathSourceStep.SourceBindingOnChanged (object,System.EventArgs) [0x00000] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxPathSourceStep.cs:71 
    at MvvmCross.Binding.Bindings.Source.MvxSourceBinding.FireChanged() [0x00006] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\Source\MvxSourceBinding.cs:36 
    at MvvmCross.Binding.Bindings.Source.Leaf.MvxLeafPropertyInfoSourceBinding.OnBoundPropertyChanged() [0x00000] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\Source\Leaf\MvxLeafPropertyInfoSourceBinding.cs:29 
    at MvvmCross.Binding.Bindings.Source.MvxPropertyInfoSourceBinding.SourcePropertyChanged (object,System.ComponentModel.PropertyChangedEventArgs) [0x00020] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\Source\MvxPropertyInfoSourceBinding.cs:88 
    at (wrapper runtime-invoke) <Module>.runtime_invoke_void__this___object_object (object,intptr,intptr,intptr) <IL 0x00062, 0xffffffff> 
    at <unknown> <0xffffffff> 
    at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) <IL 0x00034, 0xffffffff> 
    at System.Reflection.MonoMethod.Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) [0x00038] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/mcs/class/corlib/System.Reflection/MonoMethod.cs:295 
    at System.Reflection.MethodBase.Invoke (object,object[]) [0x00000] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/reflection/methodbase.cs:277 
    at MvvmCross.Platform.WeakSubscription.MvxWeakEventSubscription`2<TKey_REF, TValue_REF>.OnSourceEvent (object,TValue_REF) [0x0000f] in D:\git\MvvmCross\MvvmCross\Platform\Platform\WeakSubscription\MvxWeakEventSubscription.cs:75 
    at (wrapper delegate-invoke) <Module>.invoke_void_object_PropertyChangedEventArgs (object,System.ComponentModel.PropertyChangedEventArgs) <IL 0x00074, 0xffffffff> 
    at MvvmCross.Core.ViewModels.MvxNotifyPropertyChanged/<>c__DisplayClass10_0.<RaisePropertyChanged>b__0() <IL 0x0001c, 0x000a7> 
    at MvvmCross.Droid.Views.MvxAndroidMainThreadDispatcher.RequestMainThreadAction (System.Action) <IL 0x0001f, 0x00133> 
    at MvvmCross.Platform.Core.MvxMainThreadDispatchingObject.InvokeOnMainThread (System.Action) [0x00000] in D:\git\MvvmCross\MvvmCross\Platform\Platform\Core\MvxMainThreadDispatchingObject.cs:18 
    at MvvmCross.Core.ViewModels.MvxNotifyPropertyChanged.RaisePropertyChanged (System.ComponentModel.PropertyChangedEventArgs) <IL 0x00044, 0x00277> 
    at MvvmCross.Core.ViewModels.MvxNotifyPropertyChanged.RaisePropertyChanged (string) <IL 0x00009, 0x000b3> 
    at MvvmCross.Core.ViewModels.MvxNotifyPropertyChanged.SetProperty<int> (int&,int,string) <IL 0x00023, 0x00147> 
    at XCPCore.Models.BaseCategory.set_Count (int) [0x00001] in w:\DevWA\MobileXCP~BARONDST\MobileXCP\MobileXcp\MobileXcp.XcpCore\Models\BaseCategory.cs:26 
    at XCPCore.ViewModels.Cal.CalFavoritesViewModel.updateChannels() [0x00075] in w:\DevWA\MobileXCP~BARONDST\MobileXCP\MobileXcp\MobileXcp.XcpCore\ViewModels\Cal\CalFavoritesViewModel.cs:135 
    at XCPCore.ViewModels.Cal.CalFavoritesViewModel.Refresh() [0x00001] in w:\DevWA\MobileXCP~BARONDST\MobileXCP\MobileXcp\MobileXcp.XcpCore\ViewModels\Cal\CalFavoritesViewModel.cs:180 
    at MobileXcp.XcpAndroidApp.Fragments.CalFavoritesFragment.set_UserVisibleHint (bool) [0x0000a] in w:\DevWA\MobileXCP~BARONDST\MobileXCP\MobileXcp\MobileXcp.XcpAndroidApp\Fragments\CalFavoritesFragment.cs:82 
    at Android.Support.V4.App.Fragment.n_SetUserVisibleHint_Z (intptr,intptr,bool) <IL 0x0000b, 0x000b7> 
    at (wrapper dynamic-method) object.7467b8b6-907d-4849-8505-c72161c45779 (intptr,intptr,bool) <IL 0x00017, 0x00043> 
    at (wrapper native-to-managed) object.7467b8b6-907d-4849-8505-c72161c45779 (intptr,intptr,int) <IL 0x0002f, 0xffffffff> 

Attempting native Android stacktrace: 

at ???+3035307817 [0x6fe827f8] 
at ???+3035307817 [0xffffffff] 

================================================================= 
Got a SIGSEGV while executing native code. This usually indicates 
a fatal error in the mono runtime or one of the native libraries 
used by your application. 
================================================================= 

Fatal signal 7 (SIGBUS), code 1, fault addr 0x5 in tid 7646 (leXcp.MobileXcp) 

Ein weiterer stacktrace, geschah, als die Suche und damit die ganze Liste zu ändern:

Stacktrace: 

    at <unknown> <0xffffffff> 
    at (wrapper managed-to-native) object.wrapper_native_0xb4ecb6f9 (intptr,intptr,intptr,Android.Runtime.JValue*) <IL 0x0002a, 0xffffffff> 
    at (wrapper delegate-invoke) <Module>.invoke_void_intptr_intptr_intptr_JValue* (intptr,intptr,intptr,Android.Runtime.JValue*) <IL 0x0007d, 0xffffffff> 
    at Android.Runtime.JNIEnv.CallVoidMethod (intptr,intptr,Android.Runtime.JValue*) [0x00040] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:567 
    at Android.Widget.TextView.set_TextFormatted (Java.Lang.ICharSequence) [0x0004b] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.Widget.TextView.cs:3237 
    at Android.Widget.TextView.set_Text (string) [0x00013] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.Widget.TextView.cs:3248 
    at MvvmCross.Binding.Droid.Target.MvxTextViewTextTargetBinding.SetValueImpl (object,object) <IL 0x0000c, 0x000ab> 
    at MvvmCross.Binding.Bindings.Target.MvxConvertingTargetBinding.SetValue (object) [0x00088] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\Target\MvxConvertingTargetBinding.cs:61 
    at MvvmCross.Binding.Bindings.MvxFullBinding.UpdateTargetFromSource (object) [0x00024] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\MvxFullBinding.cs:156 
    at MvvmCross.Binding.Bindings.MvxFullBinding.<CreateSourceBinding>b__15_0 (object,System.EventArgs) [0x0000c] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\MvxFullBinding.cs:85 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxSourceStep.SendSourcePropertyChanged() [0x00006] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxSourceStep.cs:119 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxCombinerSourceStep.SubStepOnChanged (object,System.EventArgs) [0x00000] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxCombinerSourceStep.cs:107 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxSourceStep.SendSourcePropertyChanged() [0x00006] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxSourceStep.cs:119 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxCombinerSourceStep.SubStepOnChanged (object,System.EventArgs) [0x00000] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxCombinerSourceStep.cs:107 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxSourceStep.SendSourcePropertyChanged() [0x00006] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxSourceStep.cs:119 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxCombinerSourceStep.SubStepOnChanged (object,System.EventArgs) [0x00000] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxCombinerSourceStep.cs:107 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxSourceStep.SendSourcePropertyChanged() [0x00006] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxSourceStep.cs:119 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxPathSourceStep.SourceBindingOnChanged (object,System.EventArgs) [0x00000] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxPathSourceStep.cs:71 
    at MvvmCross.Binding.Bindings.Source.MvxSourceBinding.FireChanged() [0x00006] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\Source\MvxSourceBinding.cs:36 
    at MvvmCross.Binding.Bindings.Source.Leaf.MvxLeafPropertyInfoSourceBinding.OnBoundPropertyChanged() [0x00000] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\Source\Leaf\MvxLeafPropertyInfoSourceBinding.cs:29 
    at MvvmCross.Binding.Bindings.Source.MvxPropertyInfoSourceBinding.SourcePropertyChanged (object,System.ComponentModel.PropertyChangedEventArgs) [0x00020] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\Source\MvxPropertyInfoSourceBinding.cs:88 
    at (wrapper runtime-invoke) <Module>.runtime_invoke_void__this___object_object (object,intptr,intptr,intptr) <IL 0x00062, 0xffffffff> 
    at <unknown> <0xffffffff> 
    at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) <IL 0x00034, 0xffffffff> 
    at System.Reflection.MonoMethod.Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) [0x00038] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/mcs/class/corlib/System.Reflection/MonoMethod.cs:295 
    at System.Reflection.MethodBase.Invoke (object,object[]) [0x00000] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/reflection/methodbase.cs:277 
    at MvvmCross.Platform.WeakSubscription.MvxWeakEventSubscription`2<TKey_REF, TValue_REF>.OnSourceEvent (object,TValue_REF) [0x0000f] in D:\git\MvvmCross\MvvmCross\Platform\Platform\WeakSubscription\MvxWeakEventSubscription.cs:75 
    at (wrapper delegate-invoke) <Module>.invoke_void_object_PropertyChangedEventArgs (object,System.ComponentModel.PropertyChangedEventArgs) <IL 0x00074, 0xffffffff> 
    at MvvmCross.Core.ViewModels.MvxNotifyPropertyChanged/<>c__DisplayClass10_0.<RaisePropertyChanged>b__0() <IL 0x0001c, 0x000a7> 
    at MvvmCross.Droid.Views.MvxAndroidMainThreadDispatcher.RequestMainThreadAction (System.Action) <IL 0x0001f, 0x00133> 
    at MvvmCross.Platform.Core.MvxMainThreadDispatchingObject.InvokeOnMainThread (System.Action) [0x00000] in D:\git\MvvmCross\MvvmCross\Platform\Platform\Core\MvxMainThreadDispatchingObject.cs:18 
    at MvvmCross.Core.ViewModels.MvxNotifyPropertyChanged.RaisePropertyChanged (System.ComponentModel.PropertyChangedEventArgs) <IL 0x00044, 0x00277> 
    at MvvmCross.Core.ViewModels.MvxNotifyPropertyChanged.RaisePropertyChanged (string) <IL 0x00009, 0x000b3> 
    at MvvmCross.Core.ViewModels.MvxNotifyPropertyChanged.SetProperty<int> (int&,int,string) <IL 0x00023, 0x00147> 
    at XCPCore.Models.BaseCategory.set_Count (int) [0x00001] in w:\DevWA\MobileXCP~BARONDST\MobileXCP\MobileXcp\MobileXcp.XcpCore\Models\BaseCategory.cs:36 
    at XCPCore.ViewModels.Meas.ConfigInViewModel.updateChannels() [0x00149] in w:\DevWA\MobileXCP~BARONDST\MobileXCP\MobileXcp\MobileXcp.XcpCore\ViewModels\Meas\ConfigInViewModel.cs:209 
    at XCPCore.ViewModels.Meas.ConfigInViewModel.set_SearchString (string) [0x00043] in w:\DevWA\MobileXCP~BARONDST\MobileXCP\MobileXcp\MobileXcp.XcpCore\ViewModels\Meas\ConfigInViewModel.cs:158 
    at (wrapper runtime-invoke) <Module>.runtime_invoke_void__this___object (object,intptr,intptr,intptr) <IL 0x0005a, 0xffffffff> 
    at <unknown> <0xffffffff> 
    at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) <IL 0x00034, 0xffffffff> 
    at System.Reflection.MonoMethod.Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) [0x00038] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/mcs/class/corlib/System.Reflection/MonoMethod.cs:295 
    at System.Reflection.MonoProperty.SetValue (object,object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) [0x0006a] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/mcs/class/corlib/System.Reflection/MonoProperty.cs:445 
    at System.Reflection.PropertyInfo.SetValue (object,object,object[]) [0x00000] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/mcs/class/corlib/System.Reflection/PropertyInfo.cs:111 
    at MvvmCross.Binding.Bindings.Source.Leaf.MvxLeafPropertyInfoSourceBinding.SetValue (object) [0x00060] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\Source\Leaf\MvxLeafPropertyInfoSourceBinding.cs:83 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxPathSourceStep.SetSourceValue (object) [0x0001b] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxPathSourceStep.cs:85 
    at MvvmCross.Binding.Bindings.SourceSteps.MvxSourceStep.SetValue (object) [0x0001a] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\SourceSteps\MvxSourceStep.cs:70 
    at MvvmCross.Binding.Bindings.MvxFullBinding.UpdateSourceFromTarget (object) [0x00013] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\MvxFullBinding.cs:179 
    at MvvmCross.Binding.Bindings.MvxFullBinding.<CreateTargetBinding>b__18_0 (object,MvvmCross.Binding.Bindings.Target.MvxTargetChangedEventArgs) [0x00000] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\MvxFullBinding.cs:140 
    at MvvmCross.Binding.Bindings.Target.MvxTargetBinding.FireValueChanged (object) [0x00006] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\Target\MvxTargetBinding.cs:32 
    at MvvmCross.Binding.Bindings.Target.MvxConvertingTargetBinding.FireValueChanged (object) [0x0003f] in D:\git\MvvmCross\MvvmCross\Core\Binding\Bindings\Target\MvxConvertingTargetBinding.cs:93 
    at MvvmCross.Binding.Droid.Target.MvxSearchViewQueryTextTargetBinding.HandleQueryTextChanged (object,Android.Widget.SearchView/QueryTextChangeEventArgs) <IL 0x00019, 0x0014f> 
    at Android.Widget.SearchView/IOnQueryTextListenerImplementor.OnQueryTextChange (string) [0x00017] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.Widget.SearchView.cs:322 
    at Android.Widget.SearchView/IOnQueryTextListenerInvoker.n_OnQueryTextChange_Ljava_lang_String_ (intptr,intptr,intptr) [0x00011] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.Widget.SearchView.cs:207 
    at (wrapper dynamic-method) object.bf5df6e6-8c4e-4c9b-b90b-f3b9d377de80 (intptr,intptr,intptr) <IL 0x00017, 0x0004b> 
    at (wrapper native-to-managed) object.bf5df6e6-8c4e-4c9b-b90b-f3b9d377de80 (intptr,intptr,intptr) <IL 0x00029, 0xffffffff> 

Attempting native Android stacktrace: 

at ???+0 [0x6fe827f8] 
at ???+0 [0x3f7ffffc] 

================================================================= 
Got a SIGSEGV while executing native code. This usually indicates 
a fatal error in the mono runtime or one of the native libraries 
used by your application. 
================================================================= 
06-02 12:24:13.942 E/mono-rt (6344): 

aktualisieren

Scheint die Bindungen und die Aktualisierung der UI-Elemente zusammenhängen. Vielleicht werden die Referenzen für die Elemente irgendwie geklärt oder nicht vollständig freigegeben, wenn ein Gegenstand entfernt wird? Ohne die MvxBindings, die während dieses Prozesses geändert werden, stürzt es nicht ab.

aktualisieren 2

public abstract class BaseCategory : MvxNotifyPropertyChanged, IChannelItem 
{ 
    public bool Expanded { get; set; } 

    public int FavoriteCount 
    { 
     get { return m_iFavoriteCount; } 
     set { SetProperty(ref m_iFavoriteCount, value); } 
    } 

    public int Count 
    { 
     get 
     { 
      return m_iCount; 
     } 
     set 
     { 
      SetProperty(ref m_iCount, value); 
     } 
    } 
    public string Name { get; set; } 

    protected BaseCategory(string sName) 
    { 
     Expanded = false; 
     Count = 0; 
     FavoriteCount = 0; 
     Name = sName; 
    } 

    private int m_iCount; 
    private int m_iFavoriteCount; 

    public ChannelItemTypes CItemType { get { return ChannelItemTypes.Category; } } 

} 

Und das Layout, das meine eine multititemtemplateselector ausgewählt wird:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:local="http://schemas.android.com/apk/res-auto" 
       xmlns:cardview="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <android.support.v7.widget.CardView 
      android:foreground="?attr/selectableItemBackground" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    cardview:cardUseCompatPadding="true" 
    cardview:cardCornerRadius="2dp" 
    cardview:cardElevation="2dp" 
    cardview:contentPadding="10dp"> 
    <LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginRight="5dp" 
     android:padding="10dp" 
     android:textColor="@color/white" 
     android:textStyle="bold" 
     local:MvxBind="Text (Name+' '+Count)" /> 
    </LinearLayout> 
    </android.support.v7.widget.CardView> 
</LinearLayout> 

Update 3 Anscheinend sind die updateChannels() -Methode Objekte mehr und mehr Daten erzeugt. Ich bin nur nicht sicher, was könnte die Ursache dafür sein? Die Bindung an das UI-Element, den LinQ-Befehl? Oder bin ich nur blind?

Update 4 Ich habe jetzt ein separates Projekt mit nur einem MvxRecyclerView und eine ObservableCollection in einem Fragmente. Wenn ich auf die Schaltfläche klicke, füge ich der Liste neue Objekte hinzu, nachdem ich die Liste gelöscht habe. Wenn ich es mit dem DeviceMonitor ansehe, werden die Objekte immer größer. Entweder mache ich etwas schrecklich falsch oder etwas stimmt nicht mit den Komponenten, die ich verwende.

https://github.com/Noires/MvxRecyclerViewLeakTest

Update 5 Obwohl es ein Problem war, wurde es nicht auf das ursprüngliche Problem zu tun haben. Im Moment habe ich nur den MVVMCross selbst ausgetauscht, um es zu verhindern und werde das eigentliche Problem danach überprüfen.

Update 6 Ausgabe eröffnet am https://github.com/MvvmCross/MvvmCross/issues/1379

+0

Wenn ich mich richtig 'SIGSEGV' erinnern ist vor allem auf Speichermanagementfragen verbunden. Ist diese Methode jedes Mal Fragment wird sichtbar genannt? – arsena

+0

Ja ist es. Neben den 2 Tabs habe ich ein Chart bekommen, welches häufig aktualisiert wird und die Methode dahinter wurde noch nicht optimiert. Also verursacht es manchmal kleine GC_Issues, könnte das zusammenhängen? – Cyriac

+0

Kann sein. Ich werde versuchen, eine Lösung als Antwort zu posten. – arsena

Antwort

0

Das Problem im Moment ist, dass ein Pool von Einträgen aus einem Dienst in verschiedenen Viewmodels Wiederverwendung tut die Bindungen löschen propertly es scheint, da nur die Referenzen der Einträge gelöscht zu erhalten und nicht die Einträge selbst.

Die Lösung für mich im Moment ist ein zusätzliches Bindung Element, für jede Liste und für jeden Eintrag hinzuzufügen. Also, wenn es entfernt wird, stelle ich sicher, dass die Bindungen auch entfernt werden oder nicht mehr verwendet werden, bis der GC es aufräumt

Immer noch in der Hoffnung auf eine bessere Lösung, da ich irgendwie für jeden Eintrag ein zusätzliches Bindemittel Element benötigen, aber für Weitere Informationen siehe:

Update: Das Problem (https://github.com/MvvmCross/MvvmCross/issues/1379) wurde gelöst. Danke an kjeremy für die harte Arbeit!

1

Wie ich in Kommentar erwähnt, SIGSEGV meist in den Speicher-Management-Themen verbunden ist.

Einer der Vorteile von RecyclerView ist, dass Sie Elemente hinzufügen können, ohne die gesamte Liste zu aktualisieren. Das spart viel Speicher.

In updateChannels Methode löschen Sie die Liste (vermutlich Quelle von recyclerView) und dann Elemente erneut zu lesen. Das ist eine ziemlich schlechte Lösung, besonders für große Listen. Auf diese Weise wird das ganze recyclerView jedes Mal aktualisiert, wenn Sie den Tab wechseln und die Leistung stark beeinträchtigen kann.

Was Sie tun sollten, ist zu prüfen, ob Sie eine neue Daten haben und nur neue Elemente hinzuzufügen.

dass für Sie ein besseres Beispiel dafür ist aber eine einfache und schnelle Lösung newList.Except(recyclerViewSourceList) finden. Dadurch erhalten Sie Elemente aus einer neuen Quelle, die in der Recycler-Ansicht nicht enthalten sind. prüfen diese für weitere Informationen: https://stackoverflow.com/a/3944821/3423468

+0

scheint nicht wirklich das Problem zu lösen, obwohl die Leistung occupierte. Das Problem könnte darin liegen, dass in beiden Viewmodels die gleiche Kategorie referenziert wird und die "Anzeige" -Zählung geändert wird, abhängig davon, wie viele Elemente angezeigt werden. Die normale Ansicht ist wie 6 und die Lieblingsansicht ist wie 2, also wechseln Sie immer mit jeder Tabänderung vor und zurück. Atm iam denken, nur eine zusätzliche Eigenschaft für die Lieblings-Display-Zählung hinzufügen, obwohl ich nicht wirklich das bevorzugen, aber werde es einfach ausprobieren, um zu sehen, ob es es für jetzt löst. – Cyriac

+0

@Cyriac hat eine Eigenschaftshilfe hinzugefügt? Ich werde versuchen, an etwas anderes zu denken. – arsena

+0

Im Moment scheint es so, hat es noch nicht zum Absturz gebracht. – Cyriac

Verwandte Themen