0
일부 백그라운드 작업을 수행하기 위해 응용 프로그램이로드되는 동안 (스플래시 화면이 표시되는 동안) 시간을 사용할 수 있습니까? (CLLocationManager를 호출하고 현재 위치를 업데이트해야합니다.) 코드를 넣을 곳을 알려주십시오.스플래시가 진행되는 동안 무엇인가 할 수 있습니까?
일부 백그라운드 작업을 수행하기 위해 응용 프로그램이로드되는 동안 (스플래시 화면이 표시되는 동안) 시간을 사용할 수 있습니까? (CLLocationManager를 호출하고 현재 위치를 업데이트해야합니다.) 코드를 넣을 곳을 알려주십시오.스플래시가 진행되는 동안 무엇인가 할 수 있습니까?
실제 스플래시 화면이 표시되는 동안 아무 것도 수행 할 수 없습니다. 당신의 행동은 시작 화면이 제거 될 때 실행되는
- (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
}
은 "시작 화면"정말 시작 화면으로 사용하기위한 것이 아닙니다. 그것은 원래 귀하의 애플 리케이션의 UI를 표시하기 위해 거기에 어떤 데이터도없이. 이것은 즉시 표시되어 사용자에게 앱이 실제로 빠르게로드 된 다음 해당 데이터로 새로 고침되었다는 인상을줍니다. 하지만 사람들이 로딩 화면 (회사 로고 등)을 표시하기 위해 그것을 꼬집어서 Apple이 그 일을 받아들이는 것을 끝내 었다고 생각합니다. –