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

Gar*_*ary 7 location ios

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

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

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

谢谢

ugh*_*fhw 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;
    }
}
Run Code Online (Sandbox Code Playgroud)