Xamarin iOS 方法在应用导航到后台、关闭或导航到不同屏幕时覆盖以保存数据

Posted

技术标签:

【中文标题】Xamarin iOS 方法在应用导航到后台、关闭或导航到不同屏幕时覆盖以保存数据【英文标题】:Xamarin iOS method to override to save data when app navigates to background, closes or navigates to different screen 【发布时间】:2019-07-01 09:20:54 【问题描述】:

我对移动应用程序开发和 xamarin ios 非常陌生。我有一个视图控制器,它有一些 UIImageViews,我正在用图像设置 UIImageview。我想知道的是在什么时候挂上什么事件来保存图像

用户导航到不同的视图控制器 应用程序进入后台 应用已关闭

我一直在研究 xamarin 生命周期,并认为 ViewDidUnload 可能是一个不错的选择。有什么想法吗?

请原谅我的无知。

【问题讨论】:

【参考方案1】:

ViewDidUnload 已弃用。

您应该使用viewWillDisappear 来保存数据/图像。

每当您导航到不同的控制器时,都会调用此方法。 但这不包括,当您的应用程序进入后台或被终止时。

UIApplication 的 applicationDidEnterBackground 会在你的应用进入后台状态后被调用。并且 applicationWillTerminate 将在您的应用终止之前被调用。

您可以在视图中添加观察者来监控这些事件。

App观察者进入后台示例:

 NSObject notificationObserver = NSNotificationCenter.DefaultCenter.AddObserver (UIApplication.applicationDidEnterBackground, SaveData);

    private void SaveData(NSNotification a_notification)
    
        // you can save image or any other data  
    

您可以为 applicationWillTerminate 实现类似的。

【讨论】:

谢谢,这正是我现在使用的。【参考方案2】:

Darshana 的回答是正确的。

我想补充一下观察这些事件的不同方式:

UIApplication.Notifications.ObserveDidEnterBackground(HandleNotification);

public void HandleNotification(object sender, NSNotificationEventArgs e)



【讨论】:

以上是关于Xamarin iOS 方法在应用导航到后台、关闭或导航到不同屏幕时覆盖以保存数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的Xamarin应用程序的后台运行方法

从Xamarin Forms中的iOS中的App.OnSleep弹出导航堆栈

即使应用程序关闭,Xamarin 也会为数据同步形成后台服务

Xamarin iOS 后台应用程序终止

Xamarin.Android FCM 通知在应用程序关闭/后台时不显示在 HUD 中

当应用程序从后台返回时,Xamarin iOS 呈现不同的视图控制器