文档章节

Context的整理与总结

abcijkxyz
 abcijkxyz
发布于 2016/07/30 17:22
字数 549
阅读 3
收藏 0
点赞 0
评论 0

Context是我们最常使用的类之一,但是我们真正的了解它吗?它是什么?一个应用中有多少context?Context与this的区别是什么?带着这些疑问,进行本文的Android学习之旅吧!

一、Context是什么?

1、Context就是程序的上下文。
2、该类是一个抽象(abstract class)类,该抽象类的具体实现类是ContextIml。
3、通过它我们可以获取应用程序的资源和类,也包括一些应用级别的操作,例如:启动一个Activity,发送广播,接收Intent信息等。

二、Context相关类的继承关系图:

可以看出,Activity类 、Service类 、Application类都是Context子类。
三、应用程序创建Context实例有如下几种情况:
1、创建Application 对象时, 而且整个应用只有一个Application对象。
2、创建Service对象时。
3、创建Activity对象时。
因此应用程序App共有的Context数目公式为: 
      总Context实例个数 = Service个数 + Activity个数 + 1(Application对应的Context实例)

四、Context使用有可能会出现内存泄露,因此我们应该注意以下几点:
1、不要让生命周期长的对象引用activity context,即保证引用activity的对象要与activity本身生命周期是一样的。
2、对于生命周期长的对象,可以使用application context。
3、避免非静态的内部类,尽量使用静态类,避免生命周期问题,注意内部类对外部对象引用导致的生命周期变化。

五、getApplicationContext(),getApplication(),this,getContext(),getBaseContex()的区别:
1.、getApplicationContext():生命周期是整个应用,应用摧毁,它才摧毁。getApplication()跟它一样,区别只是返回值的类型不同而已,一个是Context,一个是Application。
2.、this:说明当前类是context的子类,代表当前,在Activity当中就是代表当前的Activity,换言之就是Activity.this,可以缩写为this。
3、getContext():获取的是当前对象所在的Context,如:在ContentProvider中,就需要先调用getContext()获取到Context。而在activity和Service中直接使用this。
4、getBaseContext() :返回由构造函数指定或setBaseContext()设置的上下文。

本文转载自:http://blog.csdn.net/wdong_love_cl/article/details/45398119

共有 人打赏支持
abcijkxyz
粉丝 60
博文 6196
码字总数 1876
作品 0
深圳
项目经理
Android必备:Activity 活动 和 Intent 意图 的学习整理

看这里:Android必备:Activity 活动 和 Intent 意图 的学习整理 在Android必备:Android UI控件的了解与学习中,对AndroidUI做了初步的了解和学习,本篇继续进行Android开发学习的整理。And...

Realfighter
2015/03/04
0
0
一篇文章,全面总结Android面试知识点

本篇文章的所有知识点是亲身经历十余家一二线互联网企业面试后总结产出,包含应聘Android开发岗位的各个方面的高频知识点,主要针对但不局限于Android应届面试。以下所有知识点都整理发布在G...

Ruheng
2017/10/17
0
0
一篇文章,全面总结Android面试知识点

本篇文章的所有知识点是亲身经历十余家一二线互联网企业面试后总结产出,包含应聘Android开发岗位的各个方面的高频知识点,主要针对但不局限于Android应届面试。以下所有知识点都整理发布在G...

Ruheng
2017/10/17
0
0
【Ovirt 笔记】补偿机制分析

文前说明 作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。 本文仅供学习交流使用,侵权必删。 不用...

羽杰
2017/04/24
0
0
使用C# (.NET Core) 实现状态设计模式 (State Pattern)

本文的概念性内容来自深入浅出设计模式一书 项目需求 这是一个糖果机的需求图. 它有四种状态, 分别是图中的四个圆圈: No Quarter: 无硬币 Has Quater 有硬币 Gumball Sold 糖果卖出 Out of G...

solenovex
04/23
0
0
SSM配置文件详解

这几天一直在整合SSM框架,虽然网上有很多已经整合好的,但是对于里面的配置文件并没有进行过多的说明,很多人知其然不知其所以然,经过几天的搜索和整理,今天总算对其中的XML配置文件有了一定的...

FantJ
2017/12/03
0
0
linux tomcat的项目中使用软连接的问题

软连接创建命令: ln -s 目标文件(夹) link文件 tomcat配置: 修改context.xml,在context节点添加allowLinking="true"属性,如下 <Context allowLinking="true"> PS: 碎片时代工作室:htt...

黑豆白
2012/05/29
0
1
Eclipse使用技巧总结

前言 平时总会使用工具eclipse的时候,感觉获得或少的使用什么;提供一些总结和记录。 基本使用 1. Eclipse 修改字符集 方式一:(基于工作空间) Window -> Preferences -> General -> Work...

weir_will
2017/09/29
0
0
RSpec best practices and tips #翻译

原文:http://eggsonbread.com/2010/03/28/my-rspec-best-practices-and-tips/ 1. 用简写specify{}/it{}/subject{} it "should be valid" do@user.should be_validend 可以写成这样: specif......

阿昭
2012/02/15
0
0
复习PHP-语言参考-Context选项和参数

1.在filegetcontents和fopen作为参数调用。 resource fopen ( string , string [, bool = false [, resource ]] ) string filegetcontents ( string [, bool = false [, resource [, int = -......

qzd1989
2014/05/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Git 2.18版本发布:支持Git协议v2,提升性能

Git 2.18版本发布:支持Git协议v2,提升性能Git 2.18版本发布:支持Git协议v2,提升性能 新版本协议的主要驱动力是使 Git 服务端能够对各种 ref(分支与 tag)进行过滤操作。 这就意味着,G...

linux-tao
27分钟前
0
0
python浏览器自动化测试库【2018/7/22-更新】

64位py2.7版本 更新 document_GetResources 枚举页面资源 document_GetresourceText 获取指定url的内容 包括页面图片 下载地址下载地址 密码:upr47x...

开飞色
43分钟前
28
0
关于DCL双重锁失效及解决方案

关于DCL双重锁失效及解决方案 Double Check Lock (DCL)实现单例 DCL 方式实现单例的优点是既能够在需要时才初始化单例,又能够保证线程安全,且单例对象初始化后调用getInstance方法不进行...

DannyCoder
49分钟前
0
0
PowerDesigner 16.5 安装配置

PowerDesigner16.5破解版是一款业内领先且开发人员常用的数据库建模工具,PowerDesigner可以从物理和概念两个层面设计数据库,方便用户制作处清晰直观的数据流程图和结构模型,欢迎有需要的朋...

Gibbons
今天
0
0
mac Homebrew 指令积累

1通用命令 brew install [包名] //安装包 brew list //列举安装的包 brew info [包名] // 显示安装包的详细信息 mysql 相关 #启动mysql 服务 brew service start mysql my...

Kenny100120
今天
0
0
前端Tips: 创建, 发布自己的 Vue UI 组件库

创建, 发布自己的 Vue UI 组件库 前言 在使用 Vue 进行日常开发时, 我们经常会用到一些开源的 UI 库, 如: Element-UI, Vuetify 等. 只需一行命令, 即可方便的将这些库引入我们当前的项目: n...

ssthouse_hust
今天
1
0
大数据教程(2.13):keepalived+nginx(多主多活)高可用集群搭建教程【自动化脚本】

上一章节博主为大家介绍了目前大型互联网项目的keepalived+nginx(主备)高可用系统架构体系,相信大家应该看了博主的文章对keepalived/nginx技术已经有一定的了解,在本节博主将为大家分享k...

em_aaron
今天
5
0
Git 2.18版本发布:支持Git协议v2,提升性能

在最新的官方 Git 客户端正式版2.18中添加了对 Git wire 协议 v2 的支持,并引入了一些性能与 UI 改进的新特性。在 Git 的核心团队成员 Brandon Williams 公开宣布这一消息前几周,Git 协议 ...

六库科技
今天
0
0
Java8新特性之接口

在JDK8以前,我们定义接口类中,方法都是抽象的,并且不能存在静态方法。所有的方法命名规则基本上都是 public [返回类型] [方法名](参数params) throws [异常类型] {}。 JDK8为接口的定义带...

developlee的潇洒人生
今天
0
0
aop + annotation 实现统一日志记录

aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种...

长安一梦
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部