应用程序在Xcode 4.2 iOS 5中仍在后台运行

4

我使用iOS SDK 5.0在Xcode 4.2上编写了一个应用程序。

我已经在info.plist中将UIApplicationexitonsuspend设置为YES,但是当我双击Home按钮时,应用程序仍然出现在多任务栏中。

我已经从我的iPhone 4s中删除了该应用程序,并从Xcode重新发送它,但退出暂停仍然不起作用。应用程序仍然停留在多任务标签上。


1
仅仅因为应用程序在状态栏中出现并不意味着它仍在运行。是否正在调用 applicationWillTerminate: - Frederick Cheung
1
@FrederickCheung 是的,applicationWillTerminate: 方法会被调用。如果您能够回答我在 Sergio 给出的答案下面发表的评论,那将非常有帮助。谢谢! - at0m87
3个回答

4
你的应用程序图标在“多任务标签”中显示,并不意味着你的应用程序仍然存在。
“多任务标签”只是显示你运行过的所有应用程序的列表。
评估应用程序是否在触摸时重新启动的简单方法是执行以下步骤:
1. 启动你的应用程序; 2. 按下主屏幕按钮关闭应用程序; 3. 重新启动应用程序并检查它在启动时显示的图像。 如果这个图像是你的“Default.png”图像,则该应用程序已重新启动。 如果你发现你的应用程序处于你离开时的状态,则该应用程序仅被再次激活(即它在后台运行)。
更高级的了解应用程序启动情况的方法是在你的应用程序委托方法中放置一个“NSLog”跟踪:
- (void)applicationDidEnterBackground:(UIApplication *)application {
}


- (void)applicationWillEnterForeground:(UIApplication *)application {
}

如果你看到打印输出的痕迹,那么这意味着应用程序在挂起时没有退出。相反,你可以添加一个跟踪信息:
- (void)applicationWillTerminate:(UIApplication *)application {
}

如果在按下主页按钮时调用它,则应用程序不会进入后台状态,而是退出。

好的,注意到了!我试过了,就像你说的一样。谢谢你指出来给我。但我很困惑为什么这个应用程序即使已经退出且不再运行,仍然在多任务标签页中挂起,伪装成仍在后台运行的应用程序?因为从逻辑上讲,在多任务标签栏中,意味着它仍在后台运行。所以在逻辑上看,看到它仍然在那里是没有意义的,但是我知道它已经不再运行——调试器证明了这一点。 - at0m87
我理解你的观点。我认为这只是苹果试图让用户觉得所有的应用都支持多任务处理,即使它们不支持。这对最终用户来说更容易理解。但这只是我的猜测... - sergio
谢谢您的回复。这意味着程序员无法使他的应用程序从多任务栏中消失,因为这是苹果的规定吗?如果我的问题有点烦人,请见谅,我只是一个非常好奇的人 =) - at0m87

0

"Application does not run in background mode" 和 "UIApplicationexitonsuspend" 是同一个键


0
如果您想让您的应用程序不在后台运行,请执行以下操作: 打开您的应用程序信息.plist文件,然后添加另一个属性:“应用程序不在后台模式下运行”,并确保此属性的复选框已选中。现在保存、重建并再次运行您的应用程序。通过这样做,您的应用程序将不会在后台模式下运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接