【问题标题】:Handling Interrupts in IOS app development处理 IOS 应用程序开发中的中断
【发布时间】:2012-10-09 05:27:02
【问题描述】:

我想知道当应用程序处于前台时,我们如何处理来电、短信等中断。我阅读了苹果文档,它说该应用程序将暂时进入非活动状态,即。 'applicationWillResignActive' 函数将被调用。应该执行诸如停止计时器、定期任务和运行元数据查询之类的事情,当它回到活动状态时,必须再次禁用这些任务。当他们说计时器和周期性任务时,他们指的是什么样的任务。以及我们如何明智地建立这些编码。任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: iphone objective-c ios cordova


    【解决方案1】:

    是的,当接收到临时中断时,来自 UIApplication 的以下方法会被调用 [Apple's documentation]

    - (void)applicationWillResignActive:(UIApplication *)application
    

    他们用定时器和周期性任务指代的任务是用定时器周期性地执行的这类任务。例如,您可以在后台运行一个计时器来更新视图的内容。然后,当应用程序退出活动时,您应该停止该计时器。

    例如,假设您正在运行一个计时器以每 10 秒执行一次任务:

    // AppDelegate.m
    
    // When application becomes active the timer is started
    - (void)applicationDidBecomeActive:(UIApplication *)application {
    
        self.timer = [NSTimer scheduledTimerWithTimeInterval:10.0
                                                      target:self
                                                    selector:@selector(scheduledTask:)
                                                    userInfo:nil
                                                     repeats:YES];
    }
    
    // When the application will resign active the timer is stopped
    - (void)applicationWillResignActive:(UIApplication *)application {
    
        [self.timer invalidate];
        self.timer = nil;
     }
    

    计划任务是:

    - (void)scheduledTask:(NSTimer *)timer {
    
        // Up to you... for instance: web service call
    }
    

    【讨论】:

    • 带有代码 sn-p 的示例会更好。还是谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-08-09
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    相关资源
    最近更新 更多