可能由于语义上及历史遗留问题,在自定义Application及mock测试的情况下,getApplication()
与 getApplicationContext()
返回的Application对象不一定是同一个Application。
getApplication()
API仅在 Activity 及 Service 中提供,保证返回已注册的自定义Application版本。
getApplicationContext()
API则可用于一切 Context 对象(如 BroadcastReceiver),不保证返回对象一定是自定义的版本。
对于App内数据共享、状态缓存,Google推荐使用静态单例类提供此类功能,而Application则关注App整体事件及生命周期监控。
参考:getApplication() vs. getApplicationContext() - Stack Overflow