這坑容易埋, 卻不容易發現. 工具
好比啓動一個頁面, 須要用到一個單例的工具類Utils, 初始化Utils須要一個Context參數, 直接傳入Activity.this. this
而後這個單例的Utils就會一直持有Activity.this, 致使整個Acitivity不能被GC. 而若是代碼中大量的使用Utils, 又不能確認到底誰最早初始化了Utils, 使得內存泄露成了靈異事件難以發現. spa
因此, 正確的使用方式是: activity.this.getApplicationContext();生命週期
getApplicationContext()事實上的生命週期和當前應用的生命週期同樣, 當前應用在運行時, 它不須要也不該該被回收, 因此能夠放心的使用. 事件