什么时候从内存中删除应用程序

时间:2016-08-09 20:27:34

标签: ios

我的应用中的一个标签提供了博文。我注意到当我移动到另一个选项卡或离开应用程序时,当我返回时,新的博客帖子没有下载。下载由ViewController中的viewDidLoad()启动。当我回到这个观点时,它没有被解雇。

为什么我离开应用时没有viewDidLoad()解雇?应用程序在内存中加载视图的时间有多长?

当用户返回应用或其他标签时,我应该如何检查新帖子?

谢谢!

3 个答案:

答案 0 :(得分:3)

viewDidLoad可能不是下载更新的最佳位置。例如,如果您从ViewController A推送 - >> ViewController B,第一个视图控制器(A)没有卸载。

您可能希望将代码放在viewDidAppearviewWillAppear

请查看ViewController LifeCycle以获取参考资料。

答案 1 :(得分:1)

仅在实例化ViewController时调用ViewDidLoad一次。在UITavBarController中,子视图控制器仅实例化一次。当您从tab移动到tab时,ViewControllers将保留在内存中。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITabBarController_Class/

如果您使用该应用程序,那么iOS会将其保留在内存中,直到它开始变低,然后开始终止应用程序。

看一下TabBar的代表

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITabBarControllerDelegate_Protocol/index.html

这可以告诉您何时用户切换标签。但如果它们来回翻转,它可能会不必要地创建几个API请求。

答案 2 :(得分:1)

您可以使用applicationDidBecomeActive通知触发更新或您希望应用从后台恢复时执行的任何其他操作。

这里有一个很好的答案:How can I use applicationDidBecomeActive in UIViewController?

Apple网站上还有一篇关于处理各种应用状态转换的文章:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforHandlingAppStateTransitions/StrategiesforHandlingAppStateTransitions.html