0

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

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

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

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

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

4

2 回答 2

0

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

于 2012-10-02T13:52:22.690 回答
0

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

然后考虑阅读应用程序状态周期,您可以在此处 找到本文中的重要内容包括:

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

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

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

于 2012-10-02T13:58:12.057 回答