Android Context的几点看法
来源:互联网 发布:淘宝沉香线香是真的吗, 编辑:程序博客网 时间:2024/04/26 00:30
1.首先什么是context?
文档语焉不详,说是resource什么的,反正是没看懂,实际上可以认为它是一个指向parent对象的指针,受到那个parent对象的控制。
2.为什么需要context?
试想一下这个语句:
Button
这个this就是context,前面说了它指向了parent对象,那指向了哪里?为什么需要这么做?原因是Button为了能完成自己的使命(响应各种操作)就得让Android系统知道自己是属于哪个Activity的,这个信息是必须的,因为只有这样Android系统才会对其进行管理,比如响应onClick()事件,否则系统连Button是属于哪个Activity的都不知道,怎么响应呢?如果Button的context和Activity的context是一样的,那么它们都是可见的,比如上面那个button跟Activity一样是可见的,它们的context指向另一个不可见的对象,也就是它们受那个不可见的对象控制,我理解为系统。
3.Application
这是两种不同的context,也是最常见的两种。第一种中context的生命周期与Application的生命周期相关的,context随着Application的销毁而销毁,第二种中的context跟Activity的生命周期是相关的,但是对一个Application来说,Activity可以销毁几次,那么属于Activity的context就会销毁多次。至于用哪种context,得看应用场景,个人感觉用Activity的context好一点,不过也有的时候必须使用Application的context。
举例来说:SQLite建立时是需要context的,那么我们怎么传呢?
一、建立SQLiteOpenHelper
public
..........
public
int
super(context,
//
}
.......
}
二、我们用另一个类封装一下这个类,完善数据查询、插入、删除、更新等操作,具体方法不表。
public
//定义上面那个类对象;
private
//注意这里得定义一个context,你想直接得到是得不到的,需要调用这个类的对象自己传一个context过来,这个context再将得到的context传到mySQLiteHelper
private
//构造方法
public
this.context
dbHelper
db
}
}
public
private
........
//两种方法都可以,第一种是Application的context,第二种是Activity的context
.........
}
}
在android中context可以作很多操作,但是最主要的功能是加载和访问资源。在android中有两种context,一种是
比如一个activity的onCreate:
protected
}
把activity
这样如果context发生内存泄露的话,就会泄露很多内存。
这里泄露的意思是gc没有办法回收activity的内存。
Leaking
当屏幕旋转的时候,系统会销毁当前的activity,保存状态信息,再创建一个新的。
比如我们写了一个应用程序,它需要加载一个很大的图片,我们不希望每次旋转屏
实现类似:
public
}
这段程序看起来很简单,但是却问题很大。当屏幕旋转的时候会有leak(即gc没法销毁activity)。
我们刚才说过,屏幕旋转的时候系统会销毁当前的activity。但是当drawable和view关联后,drawable保存了view的
避免这种内存泄露的方法是避免activity中的任何对象的生命周期长过activity,避免由于对象对
避免context相关的内存泄露,记住以下几点:
1.
2.
3.
Context字面意思是上下文,位于framework
如下图所示:
Context提供了关于应用环境全局信息的接口。它是一个抽象类,它的执行被Android系统所提供。它允许获取以应用为特征的资源和类型。同时启动应用级的操作,如启动Activity,broadcasting和接收intents。
- Android Context的几点看法
- Android Context的几点看法
- Android Context的几点看法
- Android Context的几点看法
- Android Context的几点看法
- Android Context的几点看法
- Android学习的几点看法
- android Context 上下文的几点解析
- Android中Context的几点理解
- 系统分析的几点看法
- 分页的几点看法
- 关于Android流畅度不如iOS的几点看法
- 关于android sdk安装的几点看法
- 几点前辈的项目的看法。
- 实现职业规划的几点看法:
- 对于手机网游的几点看法
- 关于UML的几点看法
- 对大学的几点看法
- Java多线程 阻塞队列和并发集合
- Java 动画制作
- 【转】android Toast大全
- Android 对HashMap深度分析…
- Android中Uri的使用
- Android Context的几点看法
- android ContentProvider
- Android实例剖析笔记(1)
- 0026 Java的深拷贝和浅拷贝【基础】
- __x_a != __x_a什么时候不成立?
- Android实例剖析笔记(2)
- Android Activity和Intent机制
- Android LayoutInflater的使用
- Android中MenuInflater实例