Могу ли я сделать что-то, пока показывается заставка? - PullRequest
0 голосов
/ 09 февраля 2012

Скажите, пожалуйста, можно ли использовать время во время загрузки приложения (пока отображается заставка) для выполнения некоторых фоновых операций?(Мне нужно позвонить в CLLocationManager и обновить текущее местоположение) Если мне позволено это сделать, скажите, пожалуйста, где разместить код.

1 Ответ

2 голосов
/ 09 февраля 2012

Невозможно выполнить что-либо, пока отображается настоящий заставочный экран. Ваши действия начинаются в

- (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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...