Android上下文-Context

本文详细解析了Android中上下文(Context)的概念、作用、写法和使用注意事项。上下文是应用程序运行的环境,涉及资源文件、应用程序包名等信息。通常在方法中需要传入当前对象的上下文。文章指出,项目中应优先使用活动自身的Context,避免使用getApplicationContext(),以防生命周期过长导致内存浪费和数据混乱。最后,通过实例展示了错误使用Context可能导致的程序崩溃问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己第一个程序开始,我们不断使用上下文这个概念,但是它到底是什么?有什么作用?还是很模糊的,只知道很多方法中必须要传入当前对象的上下文才行。

一、上下文的概念

应用程序运行所依赖的环境,和javaweb中的context一样,指的是一个活动或整个项目的所有信息(不同的上下文,有不同的代表)

二、上下文的作用

拿到上下文后可以很容易得到:

  • resouce文件夹
  • assets文件夹
  • 应用程序的包名
  • 其它信息

三、上下文的写法

上下文有两种书写方式,对应的是两个不同的上下文。

  • MainActivity.this:当前活动的上下文
  • getApplicationContext():代表整个应用程序的上下文,所有活动的父类
    代表一个项目的存活周期,存活周期整个应用程序的进程只要不被销毁就存活
    这里写图片描述

四、上下文的使用

项目Context和活动Context生存生存周期不一样,优先使用活动本身的Context

  • getApplicationContext()的上下文类似于一个类中的static变量,context的生命周期太长了,不推荐。如:
TextView tv =new TextView(getApplicationContext())

上面的语句,让tv的生命周期与整个项目一样长,不紧浪费内存,还容易造成数据混乱
* 一般传上下文,优先传当前活动的。

五、应用举例

下面的代码会正常跳出对话框

AlertDiolog.Builder builder =new Builder(this);
builder.setTitle("警告");
builder.setMessage("关于上下文的说明");
builder.setPositiveButton("确定",null);
builder.show();

但是如果把this—>getApplicationContext(),那对话框找不到生长的根基,因为应用程序有很多上下文。此时,程序会崩溃的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值