【问题标题】:Execute function on bringing app from sleep执行使应用程序从睡眠状态中恢复的功能
【发布时间】:2011-08-17 07:59:53
【问题描述】:

我确信这是非常直接的事情,但我无法在任何地方找到相关信息。我需要我的应用在后台打开时重新加载一些信息(不是全新打开)。任何想法如何做到这一点?

【问题讨论】:

    标签: iphone objective-c cocoa-touch ios


    【解决方案1】:

    您的应用可以覆盖您的UIApplicationDelegate 中的- (void)applicationWillEnterForeground:(UIApplication *)application

    您还可以让您的控制器成为UIApplicationWillEnterForegroundNotification 的观察者。根据 Apple Docs:在应用程序离开后台状态成为活动应用程序之前不久发布。

    NIB 文件中带有控制器的示例代码,否则覆盖- (id)init

    - (void)awakeFromNib {
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(wakeUp:) name:UIApplicationWillEnterForegroundNotification object:nil];
    }
    
    - (void)wakeUp:(NSNotification *)pNotification {
        NSLog(@"Name: %@", [pNotification name]);
        NSLog(@"Object: %@", [pNotification object]);
        NSLog(@"I am waking up");
    }
    
    - (void)dealloc {
        [[NSNotificationCenter defaultCenter] removeObserver:self];
        [super dealloc];
    }
    

    【讨论】:

    • 听起来很完美。有什么想法可以让我在视图控制器中触发它吗?
    • 这是我想要做的一个例子:我的用户在应用程序中,单击主页按钮打开 safari 或其他东西,然后再次单击我的应用程序。这应该会触发重新加载。
    • 由于某种原因,当我在 - (void)viewWillAppear:(BOOL)animated 中注册它时它会起作用。但显然这并不理想
    • 如果您的控制器不在 NIB 中,则必须覆盖 - (id)init
    【解决方案2】:

    查看UIApplicationDelegate 协议中applicationDidBecomeActiveapplicationWillEnterForeground 的文档: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html

    【讨论】:

    • 听起来很完美。有什么想法可以让我在视图控制器中触发它吗?
    猜你喜欢
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 2018-12-23
    • 2011-06-07
    相关资源
    最近更新 更多