在iphone应用程序方面,当后台应用程序恢复活动时自动重新加载显示页面的方式

Posted

技术标签:

【中文标题】在iphone应用程序方面,当后台应用程序恢复活动时自动重新加载显示页面的方式【英文标题】:In terms of iphone application, the way to reload displayed page automatically when a background app comes back to be active 【发布时间】:2013-10-17 01:56:14 【问题描述】:

我使用 Phonegap/Cordova v1.9.0 开发了一个 iphone 应用程序。

我想实现以下的事情。

-当后台应用重新激活时(点击应用图标时),显示的页面会自动重新加载-

可能我应该在 Appdelegate.m 或 MainViewController.m 中的函数 (void)applicationDidBecomeActive 中编写一些程序,但我不知道该怎么做。

请告诉我如何解决这个问题。

【问题讨论】:

UIViewController 中的这个页面是什么?它来自网络(如网页),或UITableView? 【参考方案1】:

您可以使用NSNotification 观察者模式。在您的MainViewController.m 文件和viewDidLoad 中,您可以添加一个观察者(注册通知):

- (void)viewDidLoad

    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(appDidBecomeActive:)
                                                 name:UIApplicationDidBecomeActiveNotification
                                               object:nil];

那么你必须实现appDidBecomeActive:(你可以给选择器起任何名字,但是你必须实现那个名字的方法)。在这个例子中:

- (void)appDidBecomeActive:(NSNotification *)notification 
    NSLog(@"App became active");

当应用程序恢复时,如果该视图控制器处于活动状态,它将简单地将其记录到控制台。您可以将任何您希望的代码放入该方法中(在您的情况下,刷新页面)。

不要忘记在 dealloc 方法中释放视图控制器时移除观察者。这将为您删除所有观察者。

- (void)dealloc

    [[NSNotificationCenter defaultCenter] removeObserver:self];
    NSLog(@"Removed all notification observers");

【讨论】:

感谢您的回答。我想知道如何为“刷新页面”编写代码(中间代码中的“NSLog(@“App 变得活跃”);”的部分)。我使用 Phonegap ,所以页面的文件类型是“html”(不是外部网站)。【参考方案2】:

您真的使用的是 1.9 版吗?

试试这个:

document.addEventListener("resume", onResume, false);

function onResume() 
    // Handle the resume event, reload the page or content

【讨论】:

以上是关于在iphone应用程序方面,当后台应用程序恢复活动时自动重新加载显示页面的方式的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:当用户单击主页按钮时,是不是可以关闭应用程序而不是在后台运行?

当来电活动置于后台时返回呼叫 UI

当应用程序在 iPhone 上退出活动时,计时器是不是会自动禁用?

当应用程序一天不活动时,GCM 推送通知不会出现在 iPhone 上

当应用程序从后台处于活动状态时,如何避免在本机反应中安装组件?

如果活动在后台运行,则无需通过启动器即可从小部件恢复现有活动