【问题标题】:Stop CLLocationManager when user stops app using Fast App Switcher当用户使用 Fast App Switcher 停止应用程序时停止 CLLocationManager
【发布时间】:2012-05-05 17:22:20
【问题描述】:

我正在开发一个 iOS 应用程序,它使用 CLLocationManager 来获取 GPS 数据。

当用户按下主页按钮然后使用快速应用程序切换器终止应用程序时,停止 CLLocationManager 的正确方法是什么?

如何停止 CLLocationManager 然后停止轮询 GPS 数据?有没有人知道实现这一点的好方法,因为通常当用户杀死应用程序时我无法执行任何代码......

编辑: 当我将应用程序发送到后台时,它仍然应该得到显着的LocationChanges,所以当应用程序发送到后台时我无法停止 CLLocationManager!

【问题讨论】:

    标签: objective-c ios5 cllocationmanager xcode4.3 fast-app-switching


    【解决方案1】:

    在 AppDelegate 中有一个名为 applicationWillResignActive 的方法。此方法在您的应用即将发送到后台时运行。如果您可以从 AppDelegate 访问 CLLocationManager,您可以在此处停止它。否则,您可以从 applicationWillResignActive 发布通知,并且您的 CLLocationManager 的任何类都可以订阅该通知并从那里处理它。

    这样发布通知:

    [[NSNotificationCenter defaultCenter] postNotificationName:@"appWillResignActive" object:nil];
    

    然后像这样订阅:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleResign:) name:@"appWillResignActive" object:nil];
    

    然后是这样的一些方法:

    - (void)handleResign: (NSNotification *)notification
    {
        // stop CLLocationManager
    }
    

    编辑: 如果您想在应用程序被终止时运行代码,那么您可以在 AppDelegate 的此方法中运行该代码:

    - (void)applicationWillTerminate:(UIApplication *)application
    

    【讨论】:

    • 如果应用委托以外的类需要响应这些事件,您不需要发布自己的通知:请参阅 UIApplicationWillResignActiveNotification 等。
    • SteveB,rickster - 我刚刚编辑了我的帖子,因为我还需要在应用程序处于后台时更改位置,所以在进入后台时我无法停止 CLLocationManager。无论如何,谢谢您的回答!
    • 所以你只想在应用被用户手动杀死时停止?发生这种情况时,您的应用程序中的所有代码都应该停止运行。这就是像那样杀死它的意义所在。到那时,你怎么能确认某些事情仍在发生?您是否在应用被终止后输出日志文件并查看活动?
    • 对,我只想在应用被用户杀死时停止 CLLocationManager。这只是我的问题:当应用程序被快速应用程序切换器终止以停止 CLLocationManager 或其他应用程序如何停止 CLLocationManager 时,我如何执行代码,尤其是那些使用后台更新的应用程序......???你有什么想法吗???
    猜你喜欢
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2011-03-29
    • 2013-11-20
    • 2017-12-27
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多