【问题标题】:iOS: How to detect FinishedLaunching after app's memory got cleared by OSiOS:如何在应用程序的内存被操作系统清除后检测 FinishedLaunching
【发布时间】:2018-08-03 07:44:04
【问题描述】:

我正在尝试检测已经打开然后移至后台的 iOS 应用程序何时在手机清除内存后重新打开。该应用程序基本上会重置并且 WillEnterForeground 不会被调用。有谁知道是否有办法处理手机清除内存后被带到前台的应用程序?

PS:我正在使用 Xamarin/C#,但我不介意 Swift 中的建议,我会根据我的环境调整它

谢谢!

【问题讨论】:

  • 我认为您需要在应用程序因内存不足而真正关闭之前适当地执行“didRecieveMemoryWarning”,然后在重新打开时恢复您的状态。对此不是 100% 确定
  • ReceiveMemoryWarning 在我模拟它时从 appdelegate 调用(使用模拟器),但它总是在内存实际被清除之前调用吗?当我强制它时它不会(按住电源按钮,然后按住主页按钮几秒钟以清除内存),但我不确定当内存被释放以支持应用程序时强制它是否会复制实际过程前景

标签: ios swift xamarin xamarin.ios


【解决方案1】:

当系统在后台重新启动您的应用程序时,这是有原因的:您可能正在接收位置更新,或者您可能正在收到后台文件传输完成的通知、推送通知等。

您将在用于处理该问题的 AppDelegate 方法中收到一个调用,例如 application:didReceiveRemoteNotification:fetchCompletionHandler: 用于通知的情况。

如果您的应用在前台运行时内存不足,系统会终止它,但不会重新启动它(在前台)。

【讨论】:

  • iOS 可能会为前台应用程序释放内存,即使后台应用程序没有做任何事情(没有位置更新,没有文件传输),这只是因为它有利于正在使用的应用程序。您可以通过打开您选择的应用程序来模拟该行为,例如一个游戏,杀死所有其他应用程序。现在按主页按钮将应用程序移至后台,按住电源按钮直到看到滑动以关闭屏幕,然后按住主页按钮直到它关闭“关闭”屏幕。回到你的游戏,你会看到它重新启动。
猜你喜欢
  • 1970-01-01
  • 2012-09-24
  • 2014-03-11
  • 2016-03-16
  • 1970-01-01
  • 2013-03-18
  • 2015-06-25
  • 2020-03-15
  • 2010-09-14
相关资源
最近更新 更多