gpt4 book ai didi

android - ParseInstallation.SaveAsync() 在 Xamarin 表单 Android 上导致 UnhandledException

转载 作者:行者123 更新时间:2023-11-29 01:28:28 25 4
gpt4 key购买 nike

我正在编写一个 Xamarin 表单 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 <---

下面提到的是我的代码:-

var installation = ParseInstallation.CurrentInstallation;
installation.AddUniqueToList ("channels", "RxLifeTime");
await installation.SaveAsync ();

if (installation != null) {
App.regId = System.String.IsNullOrWhiteSpace
(installation.DeviceToken) ? "" : installation.DeviceToken;
ParsePush.ParsePushNotificationReceived += PushNotificationReceived;
}

自上两个月以来我一直面临这个问题,解决它对我来说非常重要。在下面提到的链接的谷歌群组中报告了同样的问题:- Same Issue Here

有时我会得到下面提到的堆栈跟踪:-

[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

最佳答案

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

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

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;
}
}

关于android - ParseInstallation.SaveAsync() 在 Xamarin 表单 Android 上导致 UnhandledException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32587891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com