技术韭菜 2022-05-08 11:51 采纳率: 61%
浏览 19
已结题

关于安卓Context的理解和用法

在写安卓代码时,经常遇到好多方法需要传context这个参数,而经常用关键字this来传,context这个参数怎么理解?为何需要传这个参数,为何用this来传?
比如Toast.maketext(this,"显示消息",Toast.LENGTH_LONG).show();这里就用到了传context参数,而且用this来传,当在匿名内部类实现Button点击时传context需要用MainActivity.this来传,为何需要加MainActivity?

  • 写回答

4条回答 默认 最新

  • 灯塔@kuaidao 2022-05-09 11:15
    关注

    对 context 上下文的解释网上能够搜索到很多,一两句话不好说明白。这里简单解释下题主字面问题

    问题1.
    为何用this来传? 能够传递this作为上下文的,通过继承树可以看到是context 类的衍生类

    img

    而且Context 有ApplicationContext ,activityContext,Service Context等,生命周期也不一样,Application Context生命周期最长。

    传递this,第一是方便,第二是可以和当前组件的生命周期绑定一起,避免了内存泄露。这就是为什么应用中较少使用Application 的 Context的原因。

    问题2,
    匿名内部类实现Button点击时传context需要用MainActivity.this来传

    匿名内部类中this,代表的并非Context,而是匿名内部类本身,这里是为什么使用 MainActivity.this,而不是this的原因

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月17日
  • 已采纳回答 5月9日
  • 创建了问题 5月8日

悬赏问题

  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型