ApplicationContext和ActivityContext的区别

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. 避免非静态的内部类,尽量使用静态类,避免生命周期问题,注意内部类对外部对象引用导致的生命周期变化。

猜你喜欢

转载自blog.csdn.net/github_37130188/article/details/89199335