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不能正常被销毁.

 

参考

https://blog.csdn.net/Yrainy_D/article/details/113547063?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-5-113547063-blog-135224030.235^v43^pc_blog_bottom_relevance_base1&spm=1001.2101.3001.4242.4&utm_relevant_index=8

posted @ 2024-06-25 14:50  黄增松  阅读(19)  评论(0编辑  收藏  举报