代码之家  ›  专栏  ›  技术社区  ›  SeniorShizzle

如何判断iPhone应用程序是否是通过后台启动的

  •  1
  • SeniorShizzle  · 技术社区  · 14 年前

    我的应用程序使用nsuserdefaults存储一些值,以便在应用程序更新或退出后台时恢复这些值。后台自动保存我的整数值,但如果用户从启动程序退出应用程序,数字也会丢失,我想当进入后台时,viewdidUnload方法不会出现。有没有一种方法可以在应用程序卸载时保存nsuser默认值?而且,viewdidload方法也有同样的问题,它不会从背景中引起。怎么解决这个问题?

    另外,到目前为止,我的应用程序需要保存的唯一数据是用于屏幕计数的int。

    更新:uiapplicationDidEnterbackgroundingNotification非常适合您的建议!

    2 回复  |  直到 14 年前
        1
  •  1
  •   Joost Schuur    14 年前

    你不能在数据最终被杀死之前就保存它,但是你可以保存状态“以防万一” applicationDidEnterBackground: 应用程序委托。

    还有applicationdidbecomeactive:,但是没有理由从那里加载保存的数据,因为当它从后台的应用程序调用时,数据将以任何方式保留。

        2
  •  1
  •   Shaggy Frog    14 年前

    你不知道你的应用是否是从后台启动的,至少不知道它目前是如何设置的,因为如果它是从SpringBoard启动的,你的应用代理将获得相同的事件序列。

    正如joost所说,您应该保存在applicationdienterbackground回调中恢复状态所需的任何内容;本质上,您应该假设这是应用程序在被邪恶进程收割者无情杀死之前收到的最后一条消息。

    你应该去看看 WWDC 2010 Session Videos 具体来说,第105部分——在iPhone操作系统上采用多任务处理,第1部分是一个彻底的解释。