2012-02-09 4 views
0

일부 백그라운드 작업을 수행하기 위해 응용 프로그램이로드되는 동안 (스플래시 화면이 표시되는 동안) 시간을 사용할 수 있습니까? (CLLocationManager를 호출하고 현재 위치를 업데이트해야합니다.) 코드를 넣을 곳을 알려주십시오.스플래시가 진행되는 동안 무엇인가 할 수 있습니까?

+0

은 "시작 화면"정말 시작 화면으로 사용하기위한 것이 아닙니다. 그것은 원래 귀하의 애플 리케이션의 UI를 표시하기 위해 거기에 어떤 데이터도없이. 이것은 즉시 표시되어 사용자에게 앱이 실제로 빠르게로드 된 다음 해당 데이터로 새로 고침되었다는 인상을줍니다. 하지만 사람들이 로딩 화면 (회사 로고 등)을 표시하기 위해 그것을 꼬집어서 Apple이 그 일을 받아들이는 것을 끝내 었다고 생각합니다. –

답변

2

실제 스플래시 화면이 표시되는 동안 아무 것도 수행 할 수 없습니다. 당신의 행동은 시작 화면이 제거 될 때 실행되는

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

방법에서 시작됩니다. 사용자 인터페이스를 표시하기 전에 약간의 시간 소모적 인 작업을 수행하려면이 시간 동안 수동으로 "fake"스플래시 화면 만 표시하십시오. 예 : 이미지 또는 다른 것. 활동 표시기 또는 애니메이션. 스플래시 화면에 사용 된 것과 동일한 이미지를 사용하는 경우 사용자는 아무런 차이가 없으므로 스플래시 화면이 몇 초 더 오래 남아있는 것처럼 보이지만 이미 데이터가로드되어있는 것입니다.

이 경우 앱 대표는 다음과 같이 할 수있다 :

- (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 
} 
관련 문제