App在前后臺(tái)殺死程序進(jìn)程會(huì)調(diào)用的方法

在實(shí)際應(yīng)用中很多人可能都有這樣的需求:就是在程序被殺死后,希望做一些處理,比如清除沙盒中緩存等,我最近剛好也有這樣的需求,由于我的App在本地保存了一些即時(shí)聊天的消息緩存在沙盒,希望程序被殺死后就清除這些緩存.

這時(shí)就需要用到applicationWillTerminate方法了,我起初以為不管程序在前臺(tái)還是后臺(tái),直接在該方法內(nèi)清除沙盒緩存就可以了.但是進(jìn)行測(cè)試發(fā)現(xiàn),這個(gè)方法只有程序在前臺(tái)的時(shí)候退出才會(huì)調(diào)用,而如果你的程序是在后臺(tái),這時(shí)候你雙擊Home鍵來(lái)殺死進(jìn)程,那么applicationWillTerminate就不會(huì)再調(diào)用了.查看了UIApplication中所有的代理方法,也只有這個(gè)方法是退出程序被調(diào)用的,這個(gè)時(shí)候腫么辦?

查找資料并經(jīng)過(guò)測(cè)試后,發(fā)現(xiàn)可以利用applicationDidEnterBackground方法來(lái)配合解決后臺(tái)退出的問(wèn)題,方法如下:

只要在applicationDidEnterBackground里面寫(xiě)上beginBackgroundTaskWithExpirationHandler這個(gè)block,這個(gè)block內(nèi)可以不用實(shí)現(xiàn)任何操作,此時(shí)無(wú)論你是在前臺(tái)還是后臺(tái)殺死程序都會(huì)去執(zhí)行applicationWillTerminate方法,這時(shí)在這個(gè)方法內(nèi)做清除沙盒緩存以及其它的操作才能確保萬(wàn)無(wú)一失.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容