IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> context(Activity的Context和Application的Context) -> 正文阅读

[移动开发]context(Activity的Context和Application的Context)

context(Activity的Context和Application的Context)

一.

Android系统的角度来理解:Context是一个场景,代表与操作系统的交互的一种过程。

从程序的角度上来理解:Context是个抽象类,而Activity、Service、Application等都是该类的一个实现。

二.

XXXActivity.this与getApplicationContext的区别,前者是XXXActivity的对象,后者是项目的Application的实例。

三.

使用context时,注意内存泄漏,如果一个对象,长久的持有一个Context对象,比如下面

static A a = new A(context);

如果此context是Activity的对象,那么只要这个项目没有被关闭,则此Activity无法被回收掉,造成内存泄漏

可以使用context.getApplicationContext(),传入整个项目的context,就不会发生泄漏了

static A a = new A(context.getApplicationContext());

四.

下图出自(http://blog.csdn.net/lmj623565791/article/details/40481055,出自:【张鸿洋的博客】)

img

可以看到Application不应该去拿来做UI的操作,应该使用Activity作为context来处理,其他的比如Service,Activity,Application等实例都可以使用。只是注意Activity容易出现内存泄露问题。

五.Context数量

Context一共有Application、Activity和Service三种类型:

	Context数量 = Activity数量 + Service数量 + 1 

上面的1代表着Application的数量,因为一个应用程序中可以有多个Activity和多个Service,但是只能有一个Application。

六.Android获取各种Context

  1. getApplicationContext(); 返回一个

  2. getBasecontext(); 如在onClick回调中,不能使用this时,可以使用此方法表示当前context

  3. getApplication(); 只能被Activity和Service使用,

  4. getParent() : 返回activity的上下文,当在子视图里面调用的话就返回一个带有子视图的activity对象

  5. getActivity(); 在fragment中使用,返回该fragment所依附的activity上下文

  6. this 记住Activity,Service类,Application类是继承自Context类的,所以在有的时候需要上下文,只需要使用this关键字即可,但是有的时候再线程里面,this关键字的意义就改变了,但这个时候如果需要上下文,则需要使用 类名.this,这样就可以了

    《参考:https://www.cnblogs.com/chenxibobo/p/6136693.html 作者:chenxibobo

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-30 12:02:39  更:2021-09-30 12:02:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:38:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码