【问题标题】:Restart iphone application from the very beginning从一开始就重新启动 iphone 应用程序
【发布时间】:2011-11-30 17:09:04
【问题描述】:

当我关闭我的应用程序(通过 HOME 按钮)并再次打开它时,我如何强制应用程序从最开始的视图重新启动,而不是从显示的最后一个位置(在它关闭之前)重新启动?是项目中的设置吗?

【问题讨论】:

    标签: iphone xcode uiviewcontroller


    【解决方案1】:

    将应用的 info.plist 键:UIApplicationExitsOnSuspend 设置为 True。

    【讨论】:

    • 我喜欢你的回答,但我认为提问者希望应用程序保持多任务处理,但只是从根视图控制器开始......
    • hotpaw2 是正确的。这就是我一直在寻找的。但是,我选择了“应用程序不在后台运行”并将其设置为 YES。
    • 在 iOS 13.0 上已弃用
    【解决方案2】:

    查找来自手机的通知,让您知道手机“变为活动状态”,只有在应用程序运行时才会发生这种情况,然后发送到后台,然后再次拉起。 一旦您知道它再次变为活动状态,您就可以推送您的主页视图。

    - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
        if (application.applicationState == UIApplicationStateInactive ) {
             //application has been sent to the background
        }
    
        if(application.applicationState == UIApplicationStateActive ) { 
            //The application has become active an alert view or do something appropriate.
            //push home view here.
        }
    }
    

    【讨论】:

    • 您也可以像 Alex 指出的那样使用应用程序委托方法,但不要尝试退出。您应该更改向用户显示的信息。应用委托和通知都同样有效。
    【解决方案3】:

    这是由多任务造成的,即应用程序未正确退出。

    为确保它弹回,请在applicationWillEnterForeground 中尝试此操作,如下所示:

    - (void)applicationWillEnterForeground:(UIApplication *)application
    {
        [self.navigationController popToRootViewControllerAnimated:NO];
    }
    

    或者一种非常快速而肮脏的方法,是在应用程序进入后台时实际退出(注意这可能不是最好的方法)。

    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
        [[NSThread mainThread] exit];
        // OR
        exit(0);
    }
    

    【讨论】:

    • “exit(0)”的问题是 Apple 很可能会拒绝。
    • 好的,试试我的其他解决方案或[[NSThread mainThread] exit];
    猜你喜欢
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多