0
請告訴我可以使用一段時間,而應用程序正在加載(同時顯示啓動畫面)來執行一些後臺操作? (我需要調用CLLocationManager並更新當前位置)如果允許我這樣做,請告訴我在哪裏放置代碼。我可以做什麼,而飛濺正在顯示?
請告訴我可以使用一段時間,而應用程序正在加載(同時顯示啓動畫面)來執行一些後臺操作? (我需要調用CLLocationManager並更新當前位置)如果允許我這樣做,請告訴我在哪裏放置代碼。我可以做什麼,而飛濺正在顯示?
在顯示實際啓動畫面時,不可能執行任何操作。 你的行動開始時,在啓動畫面移除時執行
- (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
}
的「閃屏」是不是真的打算用作啓動畫面。它最初是爲了顯示你的應用程序的UI,但沒有任何數據。這將立即顯示給用戶一個印象,即應用程序已經非常快速地加載,然後用其中的數據刷新。但人們調整它顯示一個加載屏幕(公司標誌等),所以我認爲蘋果最終只是接受那將會發生的事情。 – 2012-02-09 12:36:46