在写安卓代码时,经常遇到好多方法需要传context这个参数,而经常用关键字this来传,context这个参数怎么理解?为何需要传这个参数,为何用this来传?
比如Toast.maketext(this,"显示消息",Toast.LENGTH_LONG).show();这里就用到了传context参数,而且用this来传,当在匿名内部类实现Button点击时传context需要用MainActivity.this来传,为何需要加MainActivity?
关于安卓Context的理解和用法
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 灯塔@kuaidao 2022-05-09 11:15关注
对 context 上下文的解释网上能够搜索到很多,一两句话不好说明白。这里简单解释下题主字面问题
问题1.
为何用this来传? 能够传递this作为上下文的,通过继承树可以看到是context 类的衍生类而且Context 有ApplicationContext ,activityContext,Service Context等,生命周期也不一样,Application Context生命周期最长。
传递this,第一是方便,第二是可以和当前组件的生命周期绑定一起,避免了内存泄露。这就是为什么应用中较少使用Application 的 Context的原因。
问题2,
匿名内部类实现Button点击时传context需要用MainActivity.this来传匿名内部类中this,代表的并非Context,而是匿名内部类本身,这里是为什么使用 MainActivity.this,而不是this的原因
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 Arduino无法同时连接多个hx711模块,如何解决?
- ¥50 需求一个up主付费课程
- ¥20 模型在y分布之外的数据上预测能力不好如何解决
- ¥15 processing提取音乐节奏
- ¥15 gg加速器加速游戏时,提示不是x86架构
- ¥15 python按要求编写程序
- ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
- ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
- ¥15 opencv图像处理,需要四个处理结果图
- ¥15 无线移动边缘计算系统中的系统模型