崩溃时自动重启 android mono 应用程序
Posted
技术标签:
【中文标题】崩溃时自动重启 android mono 应用程序【英文标题】:Automatic restart android mono app on crash 【发布时间】:2013-01-31 00:33:42 【问题描述】:如果触发未捕获的异常导致应用程序退出,我对自动重启基于 android 的应用程序的选项有疑问。我实现这个请求的想法如下,
在 MainLauncher 的 OnCreate 函数中创建一个 PendingIntent。在这种情况下,这个 PendingIntent 是否会指向一个可以触发 MainLauncher Activity 以重新启动应用程序的 BroadCastReceiver?
protected override void OnCreate(Bundle bundle) base.OnCreate(捆绑); restartIntent = PendingIntent.GetActivity(this, 0, new Intent(this, typeof(aBroadcastReceiverMaybe)), 0);
为我的应用捕获任何未捕获的异常。我的理解是你可能会覆盖一个函数 Thread.setDefaultUncaughtExceptionHandler() ,但这是在 android 的 Java 实现中。我不太确定这在 xamarin 框架下是如何工作的
在未捕获的异常覆盖中,创建一个 AlarmManager,它将在 4 秒后从步骤 1 触发 PendingIntent。使用 exit() 函数强制退出应用,再次不确定在 xamarin 框架下的实现。
在第 3 步延迟 4 秒后,将通知 BroadcastReceiver。收到通知后,启动 MainLauncher Activity 以重新启动应用程序。
如果有更适合此任务的实现,我很乐意接受。期待很快收到您的来信。
【问题讨论】:
【参考方案1】:你最好不要处理错误队友。作为一个用户,如果我的手机上有一个有问题的应用程序,并且每次它崩溃时它都会自动重启,这只会成为一种烦恼。
【讨论】:
有时不可能处理所有的异常。我开发了一个在工业环境中的专用设备上使用的 XF 应用程序,并且我已经为未处理的异常实现了自动重启功能。未处理的异常通常是某种“无法访问已处理的对象”异常,它在 XF 内部很深,并且无法在测试设置中重现。事实上,我正在使用一个单独的应用程序来负责启动和重新启动主应用程序。但我同意这不是消费者应用程序的首选方式。 无人看管的应用程序呢?不是每个人都在为应用商店开发应用。 @TidyDev 当然,在某些用例中,您的 Android 应用程序的意图是在没有任何用户干预的情况下重新启动。为此,我相信现在有一些方法可以告诉操作系统运行一个且仅一个应用程序。在这种情况下,我相信如果应用程序崩溃,操作系统会重新启动它。以上是关于崩溃时自动重启 android mono 应用程序的主要内容,如果未能解决你的问题,请参考以下文章