ApplicationContext和ActivityContext的区别

3,658 阅读1分钟
原文链接: blog.csdn.net
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:blog.csdn.net/github_3713…

ApplicationContext 的生命周期与Application的生命周期相关的,ApplicationContext随着Application的销毁而销毁,伴随application的一生,与activity的生命周期无关.

ActivityContext 跟Activity的生命周期是相关的,但是对一个Application来说,Activity可以销毁几次,那么属于Activity的context就会销毁多次

Context一共有Application、Activity和Service三种类型,因此一个应用程序中Context数量的计算公式就可以这样写:

Context数量 = Activity数量 + Service数量 + 1

上面的1代表着Application的数量,因为一个应用程序中可以有多个Activity和多个Service,但是只能有一个Application。

 

和UI相关的方法基本都不建议或者不可使用Application,并且,前三个操作基本不可能在Application中出现。实际上,只要把握住一点,凡是跟UI相关的,都应该使用Activity做为Context来处理 其他的一些操作,Service,Activity,Application等实例都可以 ,当然了,注意Context引用的持有,防止内存泄漏。

 

还有就是,在使用context的时候,为防止内存泄露,注意一下几个方面:

  1. 不要让生命周期长的对象引用activity context,即保证引用activity的对象要与activity本身生命周期是一样的。
  2. 对于生命周期长的对象,可以使用application context。
  3. 避免非静态的内部类,尽量使用静态类,避免生命周期问题,注意内部类对外部对象引用导致的生命周期变化。