事情的起因是有童鞋在论坛上发了一个帖子,原帖如下:
“在int retVal = UIApplicationMain(argc, argv, nil, nil);
后面的[pool drain]行打上断点,可是按HOME键退出的时候却没有执行到这里,哪位知道是什么原因?
在applicationWillTerminate中打上断点是可以执行到的”
我做了很多次试验,并且也到网上查了一下,发现根本无法做到,当然如果你有什么好的办法做到,请告诉我,先谢谢了。
我试验得出的结论如下:(ios 4环境)
1.使用代码可以结束自己只有一种方式,而且apple不建议这样用,就是调用exit()函数。在2.0以前uiapplication类中有一个方法可以调用,但是现在已经没有了,而且如果你强制使用2.0以前的编译环境,apple会拒绝你发布这个程序到app store.
2.用户按下home键后,程序转入后台运行。
3.连续按两次home键后,在iphone屏幕下面会出现一个程序列表,这个列表,我原先以为是转入后台运行的程序列表,通过试验结果看到,我错了,这个只是最近使用的程序列表,不论这个程序是否在后台运行。如果你按住其中一个程序图标一会儿,到这些图标开始晃动的时候,会在图标的左上角出现一个红色的减号,按这个减号,会把这个程序从最近运行列表中清除出去。如果这个程序还在后台运行,那么会结束这个程序的运行。
4.在info.plist中增加了一个选项。“Application does not run in background”,如果你添加了这一项,并且选中,那么当用户按home键后,程序不会转入后台运行,会直接被kill掉。
5.无论上面何种方式kill掉程序,applicationWillTerminate都会被调用。
这就是我试验的结果,希望对大家有用,如果我的结果不对,或者有更好的办法,请一定不吝赐教。多谢!