当我在app didFinishLaunchingWithOptions中收到UIApplicationLaunchOptionsLocationKey时,我是否初始化viewController?

时间:2011-05-08 18:32:19

标签: ios location

我正在创建一个应用程序来监听重要的位置更改事件,如果应用程序被终止,那么iOS将使用UIApplicationLaunchOptionsLocationKey设置启动应用程序。

因此,文档说要创建一个新的位置管理器并再次注册位置更新。但是,没有提到我是否应该初始化我的viewController(就像我在正常的应用程序启动时一样)?我的视图控制器在viewDidLoad中初始化,但是在appDidFinishLaunchingWithOptions中创建。

知道操作系统为App提供多长时间进行位置更新处理?如果位置更改指示应用程序感兴趣的位置,我的应用程序需要发出Web服务请求。

由于

1 个答案:

答案 0 :(得分:8)

您应该考虑将初始化代码移动到新方法,例如initializeViews。此方法将检查以确保视图尚未初始化,然后初始化它们。您可以从application:didFinishLaunchingWithOptions:applicationWillEnterForeground:调用此方法,但application:didFinishLaunchingWithOptions:中的调用仅在应用程序未进入后台时才会发生。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ...
    if([UIApplication sharedApplication].applicationState != UIApplicationStateBackground)
        [self initializeViews];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
    [self initializeViews];
}
- (void)initializeViews {
    if(!viewsAreInitialized) {
        ...
        viewsAreInitialized = YES;
    }
}