ApplicationWillTerminate in iOS 4.0

南笙酒味 提交于 2019-11-26 10:27:01

问题


The applicationWillTerminate delegate method is not getting called in iOS 4.0 When I hit the Home button I am seeing the applicationWillResignActive and applicationDidEnterBackground delegate methods getting called.

 - (void)applicationWillResignActive:(UIApplication *)application
{
  NSLog(@\"Application Did Resign Active\");
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
  NSLog(@\"Application Did Enter Background\");
}

And when I double Tap the Home button and again launch the Application the i find the applicationWillEnterForeground and applicationDidBecomeActive delegate methods are getting called.

 - (void)applicationWillEnterForeground:(UIApplication *)application
{
  NSLog(@\"Application Will Enter Foreground\");
}



- (void)applicationDidBecomeActive:(UIApplication *)application
{
  NSLog(@\"Application Did Become Active\");
}

But I want to know when the applicationWillTerminate delegate method will be called , where I do some DB/file backup routines.

- (void)applicationWillTerminate:(UIApplication *)application{

}

I even tried to hit the minus sign and deleted the App running in the Background , but still it did not call any delegate method.

Any Ideas ???


回答1:


From the iPhone Application Programming Guide:

Even if you develop your application using iPhone SDK 4 and later, you must still be prepared for your application to be terminated. If memory becomes constrained, the system might remove applications from memory in order to make more room. If your application is currently suspended, the system removes your application from memory without any notice. However, if your application is currently running in the background, the system does call the applicationWillTerminate: method of the application delegate. Your application cannot request additional background execution time from this method.

So yes, applicationWillTerminate: will generally not be called very often in iOS 4. If you have to save data, you should do so in both applicationWillTerminate: and applicationDidEnterBackground:.




回答2:


The WWDC 2010 Session Adopting Multitasking on iPhone OS (Part 2) explains the application state transitions extremely well.




回答3:


I got one solution for terminating apps when user hits the Home button in iOS4. This will call the applicationWillTerminate delegate method instead of entering into background process.

  1. Open your info.plist file
  2. Add The Key UIApplicationExitsOnSuspend
  3. Set the new key to YES



回答4:


Actually you can also use this step to do so.

  1. Open your info.plist file
  2. Add The Key -> Application does not run in background
  3. Set this key value to YES


来源:https://stackoverflow.com/questions/3139588/applicationwillterminate-in-ios-4-0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!