可能由于語(yǔ)義上及歷史遺留問題,在自定義Application及mock測(cè)試的情況下,getApplication() 與 getApplicationContext() 返回的Application對(duì)象不一定是同一個(gè)Application。
getApplication() API僅在 Activity 及 Service 中提供,保證返回已注冊(cè)的自定義Application版本。
getApplicationContext() API則可用于一切 Context 對(duì)象(如 BroadcastReceiver),不保證返回對(duì)象一定是自定義的版本。
對(duì)于App內(nèi)數(shù)據(jù)共享、狀態(tài)緩存,Google推薦使用靜態(tài)單例類提供此類功能,而Application則關(guān)注App整體事件及生命周期監(jiān)控。
參考:getApplication() vs. getApplicationContext() - Stack Overflow