【问题标题】:iOS application goes to background and has problems to return to foregroundiOS应用程序进入后台,返回前台有问题
【发布时间】:2012-10-02 13:44:34
【问题描述】:

我的应用程序触发 iPhone 拨号器并通过 App Delegate 进入后台。 在 AppDelegate.m 文件中的某处称为:

- (void) applicationDidEnterBackground: (UIApplication *) application
{
    [self terminate];
}

当我使用完外部应用程序(拨号器)后,应用程序会再次启动,但大多数 GUI 部分都没有响应。

它会响铃吗?我该如何调试这个问题?如果您需要更多信息,请告诉我。

为了更有帮助。该应用程序是一个地址簿,每个条目都是可拨号的,并且当单击 iOS 应用程序时会被调用。在通话期间我希望能够打开我的应用来浏览信息

【问题讨论】:

    标签: iphone ios ios4


    【解决方案1】:

    我假设您在这里的主要问题是您没有考虑被暂停的影响。请看这个问题:iOS 4 resume from background

    然后考虑阅读应用程序状态周期,您可以找到 here 本文中发现的重要事项包括:

    为帮助减少应用的内存占用,当您的应用移至后台时,系统会自动清除为您的应用分配的一些数据。

    1. 系统清除所有核心动画层的后备存储。这项工作不会从内存中删除应用程序的图层对象,也不会更改当前图层属性。它只是防止这些图层的内容出现在屏幕上,鉴于应用程序在后台,无论如何都不应该发生这种情况。
    2. 它会删除对缓存图像的任何系统引用。 (如果您的应用没有对图像的强引用,它们随后会从内存中删除。)
    3. 它删除了对其他一些系统管理的数据缓存的强引用

    换句话说,您的应用程序的状态可能与您在后台运行时的状态不同。整个过程太大,无法在此详述,应通过我在上面链接到的 Apple 提供的文档进行研究。

    【讨论】:

      【解决方案2】:

      当您进入后台时,您会得到 applicationdidEnterBackground,但是当这种情况发生时,您是在尝试完全退出您的应用程序吗?比这样做更好的是有一个 info.plist 键,它会告诉操作系统不要进入后台“应用程序不在后台运行”。这将更优雅地终止您的应用程序。

      【讨论】:

      • 更准确地说,key是“UIApplicationExitsOnSuspend”,并给它一个YES的值。
      • [self terminate] 是做什么的?我认为它试图杀死你的程序。
      猜你喜欢
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多