在实际应用中很多人可能都有这样的需求:就是在程序被杀死后,希望做一些处理,比如清除沙盒中缓存等,我最近刚好也有这样的需求,由于我的App在本地保存了一些即时聊天的消息缓存在沙盒,希望程序被杀死后就清除这些缓存.
这时就需要用到applicationWillTerminate方法了,我起初以为不管程序在前台还是后台,直接在该方法内清除沙盒缓存就可以了.但是进行测试发现,这个方法只有程序在前台的时候退出才会调用,而如果你的程序是在后台,这时候你双击Home键来杀死进程,那么applicationWillTerminate就不会再调用了.查看了UIApplication中所有的代理方法,也只有这个方法是退出程序被调用的,这个时候肿么办?
查找资料并经过测试后,发现可以利用applicationDidEnterBackground方法来配合解决后台退出的问题,方法如下:
只要在applicationDidEnterBackground里面写上beginBackgroundTaskWithExpirationHandler这个block,这个block内可以不用实现任何操作,此时无论你是在前台还是后台杀死程序都会去执行applicationWillTerminate方法,这时在这个方法内做清除沙盒缓存以及其它的操作才能确保万无一失.