在android中常常会遇到与context有关的内容,大多都是作为参数在传递,但是它的作用究竟是什么呢

先说它的用法,举个例子

在语句 AlertDialog.Builder builder = new AlertDialog.Builder(this); 中,要求传递的参数就是一个context,在这里我们传入的是this,那么这个this究竟指的是什么呢? 这里的this指的是Activity.this,是这个语句所在的Activity的this,是这个Activity 的上下文。网上有很多朋友在这里传入this.getApplicationContext(),这是不对的。 AlertDialog对象是依赖于一个View的,而View是和一个Activity对应的。 于是,这里涉及到一个生命周期的问题,this.getApplicationContext()取的是这个应用程序的Context,Activity.this取的是这个Activity的Context,这两者的生命周期是不同的,前者的生命周期是整个应用,后者的生命周期只是它所在的Activity。而AlertDialog应该是属于一个Activity的,在Activity销毁的时候它也就销毁了,不会再存在;但是,如果传 入this.getApplicationContext(),就表示它的生命周期是整个应用程序,这显然超过了它的生命周期了。 所以,在这里我们只能使用Activity的this。

下面具体解释它的内涵

其实Activity.this就是context的一个具体,Activity.this是你当前所在的activity的上下文,this.getApplicationContext()取得的是整个应用的上下文,在你把他们作为参数传递的时候,多数是用来标注你要在哪个activity里面进行操作,比如上文提到的AlertDialog.Builder builder = new AlertDialog.Builder(this);你是要在当前的activity里面创建对话框,如果传递的是this.getApplicationContext(),这是整个应用的上下文,代码怎么会知道你想在哪个具体的activity里面创建对话框呢,所以,在这里应该传入的是你想创建对话框的那个activity的上下文,即Activity.this.如果这你都理解了,那么你也该明白,每个activity都有自己的上下文,而整个应用只有一个上下文.

主要是周期的区别:

context是对某个Actvity来讲的,该Activity销毁后,context随之销毁
context是对整个应用来讲的,只有整个应用销毁,getApplicationContext()才会销毁

转载于:https://www.cnblogs.com/liji275137657/p/3688181.html

【转】context和getApplicationContext()介绍相关推荐

  1. context和getApplicationContext()介绍

    在android中常常会遇到与context有关的内容,大多都是作为参数在传递,但是它的作用究竟是什么呢 先说它的用法,举个例子 在语句 AlertDialog.Builder builder = n ...

  2. Context mContext = getApplicationContext();

    Context mContext = getApplicationContext();其中这个是没有theme的配置的,所以应该都是用的默认的theme的配置. 使用this, 说明当前类是conte ...

  3. Android Context解析以及getContext()、getApplication()、getApplicationContext()和getBaseContext()区别

    文章目录 Context 介绍 Context数量 getContext().getApplication().getApplicationContext()和getBaseContext()区别 g ...

  4. android中获取context的多种方法的区别(this,getbascontext(),getApplicationcontext())

    本文转自:http://www.eoeandroid.com/thread-171104-1-1.html 原文转自:http://stackoverflow.com/questions/102697 ...

  5. bboss kafka组件使用介绍

    bboss kafka组件使用介绍 本文使用的实例对应的gradle源码工程git访问地址: [url]http://git.oschina.net/bboss/bestpractice[/url] ...

  6. Android Context完全解析,你所不知道的Context的各种细节

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/47028975 前几篇文章,我也是费劲心思写了一个ListView系列的三部曲,虽然 ...

  7. android获得application类对象,android之Application类介绍

    Application类 application是用来保存全局变量的,并且是在package创建的时候就跟着存在了. 当我们需要创建全局变量的时候,而直接在application中去实现. 只需要调用 ...

  8. Android:字节跳动必备Context原理解析及使用

    Activity mActivity =new Activity() 作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言 ...

  9. Context完全解析

    原文出处:郭霖,http://blog.csdn.net/sinyu890807/article/details/47028975?locationNum=1&fps=1 Context相信所 ...

  10. jdbc Template 介绍和 spring 链接数据源的四种方式

    为什么具体讲template介绍和spring jdbc链接数据源的几种方式放在一起介绍,在于你在使用template的时候,具体配置数据源,或者在链接配置数据源的时候要是使用template,就在在 ...

最新文章

  1. 【python教程入门学习】七夕情人节表白|Python程序员的花式表白
  2. 掌握计算机视觉开发技能的8个步骤
  3. Java Struts2 (一)
  4. c++ 11 移动语义
  5. php ci post 请求,ci检测是ajax还是页面post提交数据的方法
  6. C++程序内存泄漏都与哪些方面有关,该如何处理和避免
  7. pySerial -- Python的串口通讯模块
  8. activiti7流程设计器_基于容器和微服务应用的架构:容器设计原则
  9. golang 筆記:make 與 new 的差別
  10. PAT 乙级 1008. 数组元素循环右移问题 (20) Java版
  11. [小程序]_ELVE_小程序开发(1)
  12. 服务器存储满了进不去系统,解决PC常见问题 篇四十五:建议收藏!手贱升级进不去系统?两步简单恢复黑群晖!...
  13. Linux 用户(User)查询篇
  14. 建议简书评论区升级筛选/排序功能
  15. zoj[3868]gcd期望
  16. PHP 订单拆单后明细总金额与订单金额存在差异
  17. codeblock图形界面编程
  18. 北通 战戟 BTP-2118
  19. 计算机更新后无法远程,重装系统后无法进行远程桌面连接怎么办
  20. python帮室友避险——爬虫加可视化

热门文章

  1. Notepad++插件安装和使用和打开大文件
  2. 请勿在计算机室吃带果壳的食品英语,双语者如何在两种语言间切换?
  3. oracle数据库如何写翻页_ORACLE翻页SQL语句
  4. mysql怎么进行删除操作_利用PHP怎么对MySQL数据库进行删除操作
  5. 蓝桥杯2020年第十一届Python省赛第一题-门牌制作
  6. 【安装包】MySQL客户端
  7. 7-9 40059 四则运算 (15 分)
  8. SQL Sever — 表的操作
  9. 安卓recovery如何传递启动参数
  10. ScaleAnimation缩放动画Demo