मेरा एंड्रॉइड ऐप उत्पादन वातावरण में दुर्घटनाग्रस्त हो रहा है, हमारा क्रैश रिपोर्टिंग टूल XamarinInsights है, यह निम्नलिखित स्टैक को डंप करता है

at MvvmCross.Platform.IoC.MvxSimpleIoCContainer.GetIoCParameterValues (System.Type type, System.Reflection.ConstructorInfo firstConstructor) [0x00066] in <4ddde23419c5494288c799fcdbb0f189>:0 
at MvvmCross.Platform.IoC.MvxSimpleIoCContainer.IoCConstruct (System.Type type) [0x0002a] in <4ddde23419c5494288c799fcdbb0f189>:0 
at MvvmCross.Platform.Mvx.IocConstruct[T] () [0x00005] in <4ddde23419c5494288c799fcdbb0f189>:0 
at MvvmCross.Platform.Mvx+<>c__13`2[TInterface,TType].<LazyConstructAndRegisterSingleton>b__13_0 () [0x00000] in <4ddde23419c5494288c799fcdbb0f189>:0 
at MvvmCross.Platform.IoC.MvxSimpleIoCContainer+<>c__DisplayClass33_0`1[TInterface].<RegisterSingleton>b__0 () [0x00000] in <4ddde23419c5494288c799fcdbb0f189>:0 
at MvvmCross.Platform.IoC.MvxSimpleIoCContainer+ConstructingSingletonResolver.Resolve () [0x00028] in <4ddde23419c5494288c799fcdbb0f189>:0 
at MvvmCross.Platform.IoC.MvxSimpleIoCContainer.InternalTryResolve (System.Type type, MvvmCross.Platform.IoC.MvxSimpleIoCContainer+IResolver resolver, System.Object& resolved) [0x00041] in <4ddde23419c5494288c799fcdbb0f189>:0 
at MvvmCross.Platform.IoC.MvxSimpleIoCContainer.InternalTryResolve (System.Type type, System.Nullable`1[T] requiredResolverType, System.Object& resolved) [0x0002e] in <4ddde23419c5494288c799fcdbb0f189>:0 
at MvvmCross.Platform.IoC.MvxSimpleIoCContainer.InternalTryResolve (System.Type type, System.Object& resolved) [0x00000] in <4ddde23419c5494288c799fcdbb0f189>:0 
at MvvmCross.Platform.IoC.MvxSimpleIoCContainer.Resolve (System.Type t) [0x00011] in <4ddde23419c5494288c799fcdbb0f189>:0 
at MvvmCross.Platform.IoC.MvxSimpleIoCContainer.Resolve[T] () [0x00000] in <4ddde23419c5494288c799fcdbb0f189>:0 
at MvvmCross.Platform.Mvx.Resolve[TService] () [0x00005] in <4ddde23419c5494288c799fcdbb0f189>:0 
at MyNamespace.Android.PushNotificationListener.SendNotification (System.String message, MyNamespace.Core.NotificationPayload payload) [0x00137] in <03e2d64cacc54ebebbfb6133dd9c33ae>:0 

मुझे लगता है कि जब मैं MainThreadDispatcher को हल करने और बनाने का प्रयास करता हूं तो अपवाद फेंक दिया गया था। लेकिन मुझे समझ नहीं आता क्यों।

    private IMvxMainThreadDispatcher _dispatcher = Mvx.Resolve<IMvxMainThreadDispatcher>();

    private void ShowToastMessage(string message, double duration)
    {
            _dispatcher.RequestMainThreadAction(() =>
            { 
                ...
            });
    }
2
Pavel Chehov 1 मार्च 2017, 13:11

2 जवाब

सबसे बढ़िया उत्तर

हर बार जब आप पुश प्राप्त करते हैं तो एमवीवीएमक्रॉस सिस्टम को प्रारंभ करने का प्रयास करें क्योंकि निष्पादन विभिन्न संदर्भों में किया जा सकता है (जब ऐप अनलोड किया जाता है) लेकिन पुश अधिसूचना सेवा सक्रिय है।

एमवीवीएम क्रॉस इनिशियलाइज़ेशन

2
Community 23 मई 2017, 15:17

प्रक्रिया को फिर से शुरू करने के बाद IntentService, या BroadcastReceiver के साथ काम करते समय यह एक बहुत ही सामान्य समस्या है। MvvmCross IoC कंटेनर आमतौर पर आपकी स्प्लैश स्क्रीन द्वारा सेटअप किया जाता है। इन मामलों में स्प्लैश स्क्रीन नहीं दिखाई जाती है इसलिए Mvx IoC मूल रूप से अप्रारंभीकृत है। आप पुश सूचना प्राप्त करने के बाद MvvmCross सेटअप को इनिशियलाइज़ करना सुनिश्चित करके समस्या को ठीक कर सकते हैं।

var setupSingleton = MvxAndroidSetupSingleton.EnsureSingletonAvailable(this.ApplicationContext);
setupSingleton.EnsureInitialized();

MvvmCross में MvxIntentService और MvxBroadcastReceiver हैं। यदि आप इन ऑब्जेक्ट्स का उपयोग करते हैं तो आपके लिए MvvmCross सेटअप स्वचालित रूप से प्रारंभ हो जाता है।

2
Trevor Balcom 3 मार्च 2017, 00:37