Android中Context,Intent,Bundle
来源:互联网 发布:sql查询多字段重复 编辑:程序博客网 时间:2024/06/07 03:52
Context
Context是什么
可以理解为是系统所处的环境,一个与系统交互的过程,可以用来startActivity,bindService,unbindService,加载资源,创建View的时候都要用到,从代码来看就是一个抽象类。
结构
数量
Activity数量+Service数量+1(Application)
功能
弹出Toast,启动Activity,开启服务,发送广播。绑定服务等
作用域
只能使用Activity来showDialog,并且对于开启服务以及Layout inflation最好也使用Activity
如何获取
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()
返回相同的内存地址,都可以获取到Context对象,getApplication()方法的语义性非常强,一看就知道是用来获取Application实例的,但是这个方法只有在Activity和Service中才能调用的到。那么也许在绝大多数情况下我们都是在Activity或者Service中使用Application的,但是如果在一些其它的场景,比如BroadcastReceiver中也想获得Application的实例,这时就可以借助getApplicationContext()方法了。
Context的正确使用
一般Context造成的内存泄漏,几乎都是当Context销毁的时候,却因为被引用导致销毁失败,而Application的Context对象可以理解为随着进程存在的,所以我们总结出使用Context的正确姿势:
1:当Application的Context能搞定的情况下,并且生命周期长的对象,优先使用Application的Context。
2:不要让生命周期长于Activity的对象持有到Activity的引用。
3:尽量不要在Activity中使用非静态内部类,因为非静态内部类会隐式持有外部类实例的引用,如果使用静态内部类,将外部实例引用作为弱引用持有。
Intent
- Intent是连接Android组件之间的桥梁,是一种通信机制,可用于应用程序内部的activity, service和broadcast receiver之间的交互
- Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来响应。
- 有显示和隐式使用之分
Intent Filter
除了组件之间的信息传递,还可以用来
1. 显示网页
2. 显示拨打界面页面
3. 显示发送短信界面
4. 播放指定路径的音乐
5. 卸载程序
6. 安装程序
- Android中Context,Intent,Bundle
- android中intent bundle
- Android中Intent结合Bundle传递数据
- Intent中使用Bundle
- Android中intent传递对象和Bundle的用法
- 在Android中通过Intent使用Bundle传递对象
- 在Android中通过Intent使用Bundle传递对象
- 在Android中通过Intent使用Bundle传递对象
- 在Android中通过Intent使用Bundle传递对象
- 在Android中通过Intent使用Bundle传递对象
- Android中intent传递对象和Bundle的用法
- 在Android中通过Intent使用Bundle传递对象
- Android中intent传递对象和Bundle的用法
- Android中intent传递对象和Bundle的用法
- 在Android中通过Intent使用Bundle传递对象
- Android中intent传递对象和Bundle的用法
- Android中intent传递对象和Bundle的用法
- Android中利用Intent和Bundle传值总结
- Canvas----绘制常用的基本图形
- 数据结构 之 树状数组
- 熊不是一般的熊—自我养成记
- PTAM算法流程介绍
- 2017 ccpc网络赛 1001 Vertex Cover(二分图 构造)HDU6150
- Android中Context,Intent,Bundle
- IntelliJ IDEA的安装,配置Tomcat部署及创建JavaWeb工程
- gdfzoj #785 买水果(树上dp)
- Git & GitLab 使用及规范
- 密码学实践-读书笔记八九
- mysql锁表和解锁语句
- 弱校ACM奋斗史(看了感觉特别的感动,感觉自己付出的还是不够多)
- 机器学习-决策树
- 对于Session会不会在关闭浏览器时失效这个问题...