在显示水花时我可以做些什么吗?

时间:2012-02-09 11:13:21

标签: iphone objective-c

请告诉我,在应用程序加载时(在显示启动画面时)我可以使用一段时间来执行一些后台操作吗? (我需要调用CLLocationManager并更新当前位置)如果我被允许这样做,请告诉我在哪里放置代码。

1 个答案:

答案 0 :(得分:2)

显示真实的闪屏时,无法执行任何操作。 您的行动始于

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

删除启动画面时执行的方法。 如果要在显示用户界面之前执行一些时间成本操作,则在此期间您唯一的选项是手动显示“假”闪屏。它可以是图像或其他任何东西,例如活动指标或动画。如果您使用用于闪屏的相同图像, 用户看起来没什么区别,对于他来说,启动画面看起来会持续几秒钟,但你已经加载了数据。

在这种情况下,您的应用代表可能是这样的:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.viewController = [[ViewController alloc] 
    initWithNibName:@"FakeSplashViewController" bundle:nil];
    self.window.rootViewController = self.viewController;
    [self performSelectorInBackground: @selector(someLongOperation) withObject: nil];
    [self.window makeKeyAndVisible];
    return YES;
}

- (void) someLongOperation{
    //doing something
    //...
    [self performSelectorOnMainThread:@selector(atLastLoadGUI) withObject:nil waitUntilDone:NO];
}

- (void) atLastLoadGUI{
    // start GUI
}