我正在创建一个应用程序来监听重要的位置更改事件,如果应用程序被终止,那么iOS将使用UIApplicationLaunchOptionsLocationKey设置启动应用程序。
因此,文档说要创建一个新的位置管理器并再次注册位置更新。但是,没有提到我是否应该初始化我的viewController(就像我在正常的应用程序启动时一样)?我的视图控制器在viewDidLoad中初始化,但是在appDidFinishLaunchingWithOptions中创建。
知道操作系统为App提供多长时间进行位置更新处理?如果位置更改指示应用程序感兴趣的位置,我的应用程序需要发出Web服务请求。
由于
答案 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;
}
}