Android Context相关总结

Posted Flow_孙权

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Context相关总结相关的知识,希望对你有一定的参考价值。

官方文档这样描述Context:

/**
 * Interface to global information about an application environment.  This is
 * an abstract class whose implementation is provided by
 * the android system.  It
 * allows access to application-specific resources and classes, as well as
 * up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.
 */

可以得知Context主要有以下含义:1.描述应用程序环境的信息;2.它是一个抽象类;3.可通过其获取应用的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent信息等。
Activity Service Application都继承Context,都是其实现类。所以应用程序在创建Application 创建Activity 以及创建Service时会创建应用的上下文context实例。
1.创建Application对象时
应用程序第一次启动时会创建一个Application对象同时创建Application Context,其生命周期贯穿整个应用进程的生命周期。创建Application的时机在创建handleBindApplication()方法中
2.创建Activity对象时
在调用startActivity()和startActivityForResult()方法去请求启动一个Activity时,如果系统检测需要创建一个新的Activity对象时会调用handleLaunchActivity()方法,该方法继而调performLaunchActivity()方法,去创建一个Activity实例,并且回调onCreate(),onStart()方法等。在Activity中获取Context对象时可直接用this,再起内部类中则需要指定xxActivity.this来获取。其生命周期跟Activity的生命周期同步。
3.创建Service对象时
通过startService或者bindService时,如果系统检测到需要新创建一个Service实例,就会回调handleCreateService()方法。

注意:通过getApplicationContext()方法来获取的context与xxActivity.this获取的有着本质区别。一个整个应用的上下文,一个时组件的上下文。那么各自的使用场景肯定也不同,乱使用可能会带来一些问题,如内存泄漏等。

在使用Context时注意以下几点:
1.与UI相关的操作尽量不要使用ApplicationContext对象。
2.长期保持持有Context对象的工具类或者静态方法避免内存溢出尽量使用ApplicationContext对象。

以上是关于Android Context相关总结的主要内容,如果未能解决你的问题,请参考以下文章

React Context用法总结

Android应用程序相关的文件文件夹具体解释

Android中,Context,啥是Context

Flutter Provider:为啥在调用 Provider.of<Widget>(context) 时会出现此错误,如 tihis:

FLINK基础(145):DS事件时间 时间相关 API

Android - 签名密钥过期时会发生啥?