2012-09-24 48 views
0

我想構建一個應用程序,它的一部分處理需要區分應用程序進入後臺和應用程序退出時,用戶按下關閉它從多任務窗格。然而,從我在網上的所有研究中,我發現只能執行以下操作之一:越來越applicationWillTerminate和applicationDidEnterBackground工作

a)將info.plist中'應用程序不在後臺運行'屬性設置爲YES,因此將「轉到後臺「作爲終止

b)默認情況下,去後臺的應用程序發送通知,但從多任務欄終止它不會。

是否有可能爲兩者獲取通知並確保應用程序在進入後臺時不會終止?幫助真的很感激。我運行的是新的IOS 6

維韋克

回答

2

使用nsnotification當應用程序終止檢測。這將讓你知道當用戶從多任務欄終止

UIApplication *app = [UIApplication sharedApplication]; 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(applicationWillTerminate:) 
              name:UIApplicationWillTerminateNotification 
              object:app]; 

將在您的文件中調用這個選擇:

- (void)applicationWillTerminate:(NSNotification *)notification { 
    // Do stuff before termination 
} 

否則它只是進入後臺模式取決於你的plist如何配置爲

1

每當用戶從任務管理器窗格停止應用程序時,應用程序都會發送一個SIGKILL信號,因此它不會正常終止,因此不會調用選擇器。

如果你想確保應用程序不會被終止(由操作系統),應用程序應該註冊爲需要GPS或音頻背景模式(但要記住,應用程序需要真正以正確的方式使用這些功能否則在審覈過程中將被拒絕)。

這裏是關於委託的回調一個簡單的解釋:

  • applicationWillResignActive - whenvever應用程序最小化或接收呼叫
  • applicationDidEnterBackground - 每當應用程序被用戶最小化
  • applicationWillTerminate - 每當操作系統決定終止應用程序以節省內存時(但不會在用戶死亡時)