Context 是 Application /Activity /Service的基类

Intent(Context , Class);

Activity中的上下文Context是随着活动的产生而产生,随其消亡而消亡,但是整个应用程序的上下文Context这是伴随着整个应用程序而存在的,无论活动的存活与否都影响不到这个上下文。

获取上下文的 Context : this.getApplicationContext()

获取Activity的Context

mContext = FavoritesSongActivity.this

Activity 的作用域

虽然Context神通广大,但并不是随便拿到一个Context实例就可以为所欲为,它的使用还是有一些规则限制的。由于Context的具体实例是由ContextImpl类去实现的,因此在绝大多数场景下,Activity、Service和Application这三种类型的Context都是可以通用的。不过有几种场景比较特殊,比如启动Activity,还有弹出Dialog。出于安全原因的考虑,Android是不允许Activity或Dialog凭空出现的,一个Activity的启动必须要建立在另一个Activity的基础之上,也就是以此形成的返回栈。而Dialog则必须在一个Activity上面弹出(除非是System Alert类型的Dialog),因此在这种场景下,我们只能使用Activity类型的Context,否则将会出错。

通常我们想要获取Context对象,主要有以下四种方法

1:View.getContext,返回当前View对象的Context对象,通常是当前正在展示的Activity对象。

2:Activity.getApplicationContext,获取当前Activity所在的(应用)进程的Context对象,通常我们使用Context对象时,要优先考虑这个全局的进程Context。

3:ContextWrapper.getBaseContext():用来获取一个ContextWrapper进行装饰之前的Context,可以使用这个方法,这个方法在实际开发中使用并不多,也不建议使用。

4:Activity.this 返回当前的Activity实例,如果是UI控件需要使用Activity作为Context对象,但是默认的Toast实际上使用ApplicationContext也可以。

getApplication()和getApplicationContext()

上面说到获取当前Application对象用getApplicationContext,不知道你有没有联想到getApplication(),这两个方法有什么区别?相信这个问题会难倒不少开发者。

转载于:https://www.cnblogs.com/NeilZhang/p/7095468.html

android开发中的 Activity 与 Context 区别与联系相关推荐

  1. Android 开发中Layout_Margin与padding的区别以及Layout_gravity与gravity的区别

    Layout_Margin与padding的区别以及Layout_gravity与gravity的区别 平时开发中这几个属性是我们经常使用的几个属性,偶尔脑子一糊涂,就容易弄混这些属性,下面,我就仔细 ...

  2. android中的mvp模式怎么定义,详解MVP模式在Android开发中的应用

    一.MVP介绍 随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责.为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Mode ...

  3. Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi

    Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi ...

  4. Android开发中VSS、RSS、PSS、USS的区别

    Android开发中VSS.RSS.PSS.USS的区别 1. VSS: Virtual Set Size 虚拟耗用内存(包含共享库占用的内存) VSS表示一个进程可访问的全部内存地址空间的大小.这个 ...

  5. Android开发中横竖屏切换的问题以及系统提供的常用Activity

    Android开发中横竖屏切换的问题以及系统提供的常用Activity(总结) 2018年06月28日 16:18:45 北极熊的微笑 阅读数:72 横竖屏切换与状态保存的问题 前面也也说到了App横 ...

  6. Android开发中常见的设计模式

    对于开发人员来说,设计模式有时候就是一道坎,但是设计模式又非常有用,过了这道坎,它可以让你水平提高一个档次.而在android开发中,必要的了解一些设计模式又是非常有必要的.对于想系统的学习设计模式的 ...

  7. android开发中遇到的问题汇总

    android开发中遇到的问题汇总(五),android汇总127.ANDROID仿IOS时间_ANDROID仿IOS弹出提示框 http://dwtedx.com/itshare_297.html1 ...

  8. android motionevent 坐标,Android开发中MotionEvent坐标获取方法分析

    本文实例讲述了Android开发中MotionEvent坐标获取方法.分享给大家供大家参考,具体如下: Android MotionEvent中getX()与getRawX()都是获取屏幕坐标(横), ...

  9. Android开发中应避免的重大错误

    by Varun Barad 由Varun Barad Android开发中应避免的重大错误 (Critical mistakes to avoid in Android development) A ...

最新文章

  1. python图像配准的原理_python利用sift和surf进行图像配准
  2. 最完整的Explain总结,SQL优化不再困难
  3. iis php性能优化,IIS 6 的 PHP 最佳配置方法
  4. java 添加图片背景_java添加背景图片
  5. 定时器取数据时实时进来的数据_Redis-数据淘汰策略amp;持久化方式(RDB/AOF)amp;Redis与Memcached区别...
  6. 根据年月日计算是星期几的函数,基姆拉尔森计算公式
  7. hadoop 学习(1):搭建环境
  8. div+css与table布局
  9. IDEA连接Git后类的颜色含义
  10. java day12【Object类、常用API】
  11. 支持树型的GridView控件
  12. PHP配置问题(找不到指定模块)解决办法
  13. JavaEE中级.20190615.易买网项目(一).隐藏域.
  14. 入侵检测领域数据集总结
  15. 解锁万亿级市场,边缘计算不“边缘”
  16. 安装ubuntu20.4桌面系统
  17. 计算机科学与生命科学的关系,计算机科学与生命科学论文
  18. 关于APP个人信息安全和隐私合规评估,你想知道的都在这!
  19. MapReduce 之一:MapReduce体系结构
  20. 【财经期刊FM-Radio|2020年11月19日】

热门文章

  1. Java虚拟机学习(6):对象访问
  2. Java 语言中 Enum 类型的使用介绍
  3. OpenCV中 CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)
  4. 使用脚本编写 Vim 编辑器,第 2 部分: 用户定义函数
  5. 草图检索和识别[开源]
  6. Python实现二分查找
  7. 第 10 章 容器监控 - 078 - Docker 最常用的监控方案
  8. python 星号*使用方法
  9. 序列化和反序列化的对单例破坏的防止及其原理
  10. Windows 10 RedStone2值得期待的五大功能猜想