1

appDelegate のapplicationDidReceiveMemoryWarningメソッドを使用して、高リソース オブジェクトをいくつかダンプしています。アプリが再起動したら、それらのオブジェクトだけをリロードしてユーザーを最後のページに戻そうとするのではなく、アプリを一番上から再起動したいと思います (メイン ページから、アプリは 1 レベルの深さまでしか移動しないため、これは私たちにとって完全に受け入れられます)。

これが私のわずかな試みですが、それはひどい失敗でした。近づいたのですが、実際のメモリ ダンプとアプリのクラッシュにつながるいくつかの問題が発生しました。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    self.viewController = [[SplashScreenViewController alloc] initWithNibName:@"SplashScreenViewController" bundle:nil];
    UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:self.viewController];
    self.window.rootViewController = navcon;
    [self.window makeKeyAndVisible];
    return YES;
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    //For testing purposes only
    self.lowMemoryWarning = TRUE;
    NSLog(@"app did enter background");
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    NSLog(@"app will enter foreground");
    if (self.lowMemoryWarning) {
        NSLog(@"recovering from low memory warning");
        self.window.rootViewController = nil;
        UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:self.viewController];
        self.window.rootViewController = navcon;
        [self.window makeKeyAndVisible];
    }
}

このようなことをするための最良のアプローチは何ですか? 私が知らない簡単なトリックはありますか?

ありがとうございました!

4

1 に答える 1

0

アプリが起動するたびに再起動する(またはフォアグラウンドに入る)ことを意味しますか?はいの場合、マルチタスクをサポートしないようにアプリを設定できます

http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW5

「バックグラウンド実行のオプトアウト」を検索します

================================================== ==============================

申し訳ありませんが、アプリケーションの性質を知りませんでした。何らかのプロセスをバックグラウンドで実行する必要がある場合、この方法は使用できません。

UIActivityIndi​​cator + アプリがフォアグラウンドに入った後、特定のオブジェクトを現在のビューにロードすることについての上記のコメントを読みました。アプリケーションがフォアグラウンドに入ったときに現在のビューを見つける、このスレッドが役立つかもしれません。IOS

于 2013-01-05T16:21:38.527 に答える