【问题标题】:What is the basic difference between these two toast? [duplicate]这两种吐司的基本区别是什么? [复制]
【发布时间】:2018-12-26 02:19:10
【问题描述】:

Toast.makeText(MainActivity.this,"YOUR MESSAGE",Toast.LENGTH_LONG).show();

Toast.makeText(getApplicationContext(),String.valueOf(sum),Toast.LENGTH_LONG).show();

为什么在上面的语句中使用 MainActivity.this 并在另一个语句中使用 getApplicationcontext() ,它们是做什么的?

【问题讨论】:

    标签: android


    【解决方案1】:

    没有太大区别,Toast.makeText 基本上需要一个Context obj 作为第一个参数。由于在 Hierarchy Activity 的深处扩展了 Context,因此传递 activityObj.thisgetApplicationContext() 应该可以解决问题。

    但是,您需要根据getApplicationContext() 的文档了解具有关键区别的getApplicationContext() 的用法:

    返回单个全局应用程序对象的上下文 当前进程。 通常只有在您需要 生命周期与当前上下文分离的上下文,即 与进程的生命周期相关,而不是与当前组件相关。

    由于 Activity 上下文与 Activity 相关联并且可以在 Activity 被销毁时被销毁 - 单个应用程序可能有多个 Activity(很可能)。你可以关注这个SO了解更多详情

    【讨论】:

    • 对不起,我没有明白你的意思
    • @Dhruv 重点是,getApplicationContext() 返回 Context 并且 MainActivity.this 也是 Context 类型的对象,因为间接 MainActivity 扩展了 Context
    • 谢谢,我明白了。
    • @Dhruv 如果有用,记得将答案标记为已接受
    猜你喜欢
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 2020-08-13
    • 2020-01-12
    • 1970-01-01
    相关资源
    最近更新 更多