Android ParseInstallation.SaveAsync()导致Xamarin窗体上出现未处理的异常

Android ParseInstallation.SaveAsync()导致Xamarin窗体上出现未处理的异常,android,parse-platform,xamarin,xamarin.android,xamarin.forms,Android,Parse Platform,Xamarin,Xamarin.android,Xamarin.forms,我正在编写一个Xamarin forms android应用程序,并为其实现推送通知。 在Android中调用ParseInstallation.SaveAsync()方法时,我得到了下面提到的堆栈跟踪: [MonoDroid] UNHANDLED EXCEPTION: [MonoDroid] System.AggregateException: One or more errors occurred. ---> System.FormatException: String was not

我正在编写一个Xamarin forms android应用程序,并为其实现推送通知。 在Android中调用ParseInstallation.SaveAsync()方法时,我得到了下面提到的堆栈跟踪:

[MonoDroid] UNHANDLED EXCEPTION:
[MonoDroid] System.AggregateException: One or more errors occurred. ---> System.FormatException: String was not recognized as a valid DateTime.
[MonoDroid] at System.DateTimeParse.ParseExact (System.String s, System.String format, System.Globalization.DateTimeFormatInfo dtfi, DateTimeStyles style) [0x00027] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/globalization/datetimeparse.cs:57
[MonoDroid] at System.DateTime.ParseExact (System.String s, System.String format, IFormatProvider provider) [0x00000] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/datetime.cs:1083
[MonoDroid] at Parse.ParseClient.ParseDate (System.String input) [0x0000b] in :0
[MonoDroid] at Parse.ParseObject.MergeMagicFields (IDictionary

2 data) [0x000a4] in <filename unknown>:0 
[MonoDroid]   at Parse.ParseObject.MergeFromServer (IDictionary

2 data) [0x0001a] in :0
[MonoDroid] at Parse.ParseObject.MergeAfterSave (IDictionary

2 result) [0x0003a] in <filename unknown>:0 
[MonoDroid]   at Parse.ParseObject+<>c__DisplayClass2a.<SaveAsync>b__26 (System.Threading.Tasks.Task

1 t) [0x0004c] in :0
[MonoDroid] at System.Threading.Tasks.ContinuationResultTaskFromResultTask2[System.Tuple2[System.Net.HttpStatusCode,System.Collections.Generic.IDictionary2[System.String,System.Object]],System.Threading.Tasks.Task1[System.Tuple2[System.Net.HttpStatusCode,System.Collections.Generic.IDictionary2[System.String,System.Object]]]].InnerInvoke () [0x00027] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/threading/Tasks/TaskContinuation.cs:207
[MonoDroid] at System.Threading.Tasks.Task.Execute () [0x00016] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/threading/Tasks/Task.cs:2523
[MonoDroid] --- End of stack trace from previous location where exception was thrown ---
[MonoDroid] at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000b] in /Users/builder/data/lanes/2058/58099c53/source/mono/mcs/class/corlib/System.Runtime.ExceptionServices/ExceptionDispatchInfo.cs:61
[MonoDroid] at Parse.Internal.InternalExtensions+<>c__DisplayClass7

1[System.Object].<OnSuccess>b__6 (System.Threading.Tasks.Task t) [0x00033] in <filename unknown>:0 
[MonoDroid]   at System.Threading.Tasks.ContinuationResultTaskFromTask

1[System.Threading.Tasks.Task

1[System.Object]].InnerInvoke () [0x00027] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/threading/Tasks/TaskContinuation.cs:111 
[MonoDroid]   at System.Threading.Tasks.Task.Execute () [0x00016] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/threading/Tasks/Task.cs:2523 
[MonoDroid]   --- End of inner exception stack trace ---
[MonoDroid] at System.Threading.Tasks.Task.ThrowIfExceptional (bool) [0x00014] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/threading/Tasks/Task.cs:2168
[MonoDroid] at System.Threading.Tasks.Task.Wait (int,System.Threading.CancellationToken) [0x00052] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/threading/Tasks/Task.cs:3218
[MonoDroid] at System.Threading.Tasks.Task.Wait (int) [0x00000] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/threading/Tasks/Task.cs:3159
[MonoDroid] at Parse.ParsePushService.OnHandleIntent (Android.Content.Intent) <IL 0x00063, 0x0033b>
[MonoDroid] at Android.App.IntentService.n_OnHandleIntent_Landroid_content_Intent_ (intptr,intptr,intptr) [0x00011] in /Users/builder/data/lanes/2058/58099c53/source/monodroid/src/Mono.Android/platforms/android-22/src/generated/Android.App.IntentService.cs:141
[MonoDroid] at (wrapper dynamic-method) object.4f1ee6dc-1a44-45bb-ba65-81f69a0db824 (intptr,intptr,intptr) <IL 0x00017, 0x00043>
[MonoDroid] ---> (Inner Exception #0) System.FormatException: String was not recognized as a valid DateTime.
[MonoDroid]   at System.DateTimeParse.ParseExact (System.String s, System.String format, System.Globalization.DateTimeFormatInfo dtfi, DateTimeStyles style) [0x00027] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/globalization/datetimeparse.cs:57 
[MonoDroid]   at System.DateTime.ParseExact (System.String s, System.String format, IFormatProvider provider) [0x00000] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/datetime.cs:1083 
[MonoDroid]   at Parse.ParseClient.ParseDate (System.String input) [0x0000b] in <filename unknown>:0 
[MonoDroid]   at Parse.ParseObject.MergeMagicFields (IDictionary

2 data) [0x000a4] in :0
[MonoDroid] at Parse.ParseObject.MergeFromServer (IDictionary

2 data) [0x0001a] in <filename unknown>:0 
[MonoDroid]   at Parse.ParseObject.MergeAfterSave (IDictionary

2 result) [0x0003a] in :0
[MonoDroid] at Parse.ParseObject+<>c__DisplayClass2a.b__26 (System.Threading.Tasks.Task

1 t) [0x0004c] in <filename unknown>:0 
[MonoDroid]   at System.Threading.Tasks.ContinuationResultTaskFromResultTask

2[System.Tuple2[System.Net.HttpStatusCode,System.Collections.Generic.IDictionary2[System.String,System.Object]],System.Threading.Tasks.Task1[System.Tuple2[System.Net.HttpStatusCode,System.Collections.Generic.IDictionary

2[System.String,System.Object]]]].InnerInvoke () [0x00027] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/threading/Tasks/TaskContinuation.cs:207 
[MonoDroid]   at System.Threading.Tasks.Task.Execute () [0x00016] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/threading/Tasks/Task.cs:2523 
[MonoDroid] --- End of stack trace from previous location where exception was thrown ---
[MonoDroid]   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000b] in /Users/builder/data/lanes/2058/58099c53/source/mono/mcs/class/corlib/System.Runtime.ExceptionServices/ExceptionDispatchInfo.cs:61 
[MonoDroid]   at Parse.Internal.InternalExtensions+<>c__DisplayClass7

1[System.Object].b__6 (System.Threading.Tasks.Task t) [0x00033] in :0
[MonoDroid] at System.Threading.Tasks.ContinuationResultTaskFromTask1[System.Threading.Tasks.Task1[System.Object]].InnerInvoke () [0x00027] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/threading/Tasks/TaskContinuation.cs:111
[MonoDroid] at System.Threading.Tasks.Task.Execute () [0x00016] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/threading/Tasks/Task.cs:2523 <--- 
我从上两个月开始就面临这个问题,解决这个问题对我来说非常重要。 谷歌集团在下面提到的链接上也报道了同样的问题:-

还有一些时候,我会看到下面提到的堆栈跟踪:-

[MonoDroid] UNHANDLED EXCEPTION:
[MonoDroid] System.NullReferenceException: Object reference not set to an instance of an object
[MonoDroid] at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000b] in /Users/builder/data/lanes/2058/58099c53/source/mono/mcs/class/corlib/System.Runtime.ExceptionServices/ExceptionDispatchInfo.cs:61
[MonoDroid] at System.Runtime.CompilerServices.AsyncMethodBuilderCore.m__0 (object) [0x00000] in /Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:1006
[MonoDroid] at Android.App.SyncContext/c__AnonStorey0.<>m__0 () [0x00000] in /Users/builder/data/lanes/2058/58099c53/source/monodroid/src/Mono.Android/src/Android.App/SyncContext.cs:18
[MonoDroid] at Java.Lang.Thread/RunnableImplementor.Run () [0x0000b] in /Users/builder/data/lanes/2058/58099c53/source/monodroid/src/Mono.Android/src/Java.Lang/Thread.cs:36
[MonoDroid] at Java.Lang.IRunnableInvoker.n_Run (intptr,intptr) [0x00009] in /Users/builder/data/lanes/2058/58099c53/source/monodroid/src/Mono.Android/platforms/android-22/src/generated/Java.Lang.IRunnable.cs:71
[MonoDroid] at (wrapper dynamic-method) object.853c0f2f-07e2-447e-8d30-7ae1bda0b4ef (intptr,intptr)
[AndroidRuntime] Shutting down VM
[MonoDroid]未处理的异常:
[MonoDroid]System.NullReferenceException:对象引用未设置为对象的实例
[MonoDroid]在/Users/builder/data/lanes/2058/58099c53/source/mono/mcs/class/corlib/System.Runtime中的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()[0x0000b]中。ExceptionServices/ExceptionDispatchInfo.cs:61
/Users/builder/data/lanes/2058/58099c53/source/mono/external/referencesource/mscorlib/System/Runtime/CompilerServices/CompilerServices/asynchmethodbuilder.cs:1006中的[MonoDroid]在System.Runtime.CompilerServices.asynchmethodbuildercore.m_u0(对象)[0x00000]
[MonoDroid]位于Android.App.SyncContext/c_uuanostorey0.m_uu0()[0x00000]in/Users/builder/data/lanes/2058/58099c53/source/MonoDroid/src/Mono.Android/src/Android.App/SyncContext.cs:18
[MonoDroid]位于/Users/builder/data/lanes/2058/58099c53/source/MonoDroid/src/Mono.Android/src/Java.Lang/Thread.cs:36中的Java.Lang.Thread/RunnableImplementor.Run()[0x0000b]
[MonoDroid]在Java.Lang.irunableinvoker.n_运行(intptr,intptr)[0x00009]in/Users/builder/data/lanes/2058/58099c53/source/MonoDroid/src/Mono.Android/platforms/Android-22/src/generated/Java.Lang.irunable.cs:71
[MonoDroid]at(包装器动态方法)object.853c0f2f-07e2-447e-8d30-7ae1bda0b4ef(intptr,intptr)
[AndroidRuntime]正在关闭VM

经过几天的研究,我找到了答案。 我们可以使用xamarin提供的服务来避免此类意外崩溃,从而解决了上述问题。同样的事情也提到了

下面提到的是我正在使用的代码:

public class MainActivity : Activity
{
 protected override void OnCreate(Bundle bundle)
 {
  // At the end of OnCreate
  AndroidEnvironment.UnhandledExceptionRaiser += AndroidEnvironmentUnhandledExceptionRaiser;
 }

  private void AndroidEnvironmentUnhandledExceptionRaiser(object sender, RaiseThrowableEventArgs e)
  {
    // Place a breakpoint in this method to inspect e.Exception
    e.Handled = true;
  }
}
public class MainActivity : Activity
{
 protected override void OnCreate(Bundle bundle)
 {
  // At the end of OnCreate
  AndroidEnvironment.UnhandledExceptionRaiser += AndroidEnvironmentUnhandledExceptionRaiser;
 }

  private void AndroidEnvironmentUnhandledExceptionRaiser(object sender, RaiseThrowableEventArgs e)
  {
    // Place a breakpoint in this method to inspect e.Exception
    e.Handled = true;
  }
}