Context與ApplicationContext

Android開發中常常會用到Context,從英文角度釋義「場景」。從程序角度,Context是一個抽象類,經過代碼能夠發現Activity、Service、Application都是Context的子類。app

Activity、Service、Application都是繼承自ContextWrapper。對象

 

接下來咱們來看看Context與ApplicationContext,前者是Activity的Context,後者是Application的Context。繼承

Activity的Context確定跟隨Activity的生命週期而變化,後一種Application的Context隨着Application的變化而變化,跟隨Application的一輩子。生命週期

 

Application的Context是一個全局靜態變量,SDK的說明是隻有當你引用這個context的生命週期超過了當前activity的生命週期,而和整個應用的生命週期掛鉤時,纔去使用這個application的context。內存

一種推薦的用法就是應用程序註冊廣播broadcast時,使用這個context。開發

引用application context並不會致使內存泄漏。引用activity的context纔會致使內存泄漏,當你的引用對象的生命週期超過了當前activity的生命週期時,系統回收你的activity時發現還有一個context的強引用,而不去銷燬這個activity,致使內存泄漏,在開發過程當中,須要很是重視這點(一個全局靜態變量在引用context時必定要使用application的Context, 而不要使用activity的)it

相關文章
相關標籤/搜索