【问题标题】:Enabling and disabling multitasking within application在应用程序中启用和禁用多任务处理
【发布时间】:2011-05-15 23:45:03
【问题描述】:

目前,我的 iPad 应用程序实现了多任务处理。但是,我想为用户提供禁用多任务处理的选项。鉴于您无法修改设置了 UIApplicationExistsOnSuspend 键的 Info.plist 字典,这是否可能?

【问题讨论】:

  • 出于好奇,为什么用户会选择禁用多任务处理(即权衡取舍)?
  • 我的应用程序在后台播放音频。有时,在我的测试阶段,我不希望在切换应用程序时继续播放音频,因此是用户友好的选项。

标签: objective-c ipad ios multitasking


【解决方案1】:

好吧,您可以在您的应用程序委托中设置一个标志,当该标志在委托方法 applicationDidEnterBackground: 中为 TRUE 时简单地退出您的应用程序,如下所示:

@interface MyAppDelegate : NSObject <UIApplicationDelegate> {
   BOOL multitasking;
   ...
}
...
@end

@implementation MyAppDelegate

- (void) applicationDidEnterBackground:(UIApplication *)application {
   if(!multitasking) {
      exit(0);
      return;
   }
   ...
}

...
@end

【讨论】:

  • 当用户退出时,iOS 是否会“温和地”终止应用程序?如果是这样,“exit(0)”有什么替代方法吗?
  • @Evan,不,没有办法在代码中“温和地”终止应用程序。
  • 您的问题的答案是肯定的,iOS 确实“温和地”终止应用程序。 UIApplication 上有一个名为 _terminateWithStatus: 的方法可以执行此操作。但是,它是私有的,因此 you 没有(Apple 认可的)方式来温和地终止应用程序。调用 exit() 将杀死该应用程序,但您不会与它交任何朋友。所以,我相信你最初的问题的答案是否定的。
  • @Adam:我发现terminateWithSuccess 是一个私有方法。这似乎可以解决问题。我同意你关于使用exit,因为它基本上会杀死我的应用程序,这可能会导致崩溃日志的生成。
  • @Evan,没有其他(记录)方法可以完成上述行为。对不起!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多