Android中Activity的Context?
应用程序创建Context实例的情况有如下几种:
1.创建Application对象时,而且整个app只有一个Application对象
2.创建Service对象时
3.创建Activity对象时
因此应用程序App共有的Context数目公式为:
总Context实例个数=Service个数+Activity个数+1(Application对应的Context实例)
可以看到Activity,Service,Application都是Context的子类
具体创建Context的时机
1.创建Application对象的时机
每个应用程序在第一次启动时,都会首先创建Application对象.如果对应用程序启动一个Activity(startActivity)流程比较清楚的话,创建Application的时机在创建handlerBindApplication()方法中.
2.创建Activity对象的时机
通过startActivity()或者startActivityForResult()请求启动一个Activity时,如果系统检测需要新建一个Activity对象时,就会回调handlerLaunchActivity()方法,该方法继而调用performLaunchActivity()方法,去创建一个Activity实例,并且回调onCreate(),onStart()方法等
3.创建Service对象的时机
通过startService或者bindService时,如果系统检测到需要新创建一个Service实例,就会回调HandlerCreateService()方法,完成相关数据操作.
Activity的Context,作用域当前Activity的生命周期,Activity销毁,Context销毁,不会内存泄漏
Application的Context,作用域整个应用的生命周期
避免这种内存泄露的方法是避免activity中任何对象的生命周期长过activity,避免由于对象对activity的引用导致activity不能正常被销毁.
参考