首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语境差异

语境差异
EN

Stack Overflow用户
提问于 2012-07-23 08:15:30
回答 2查看 766关注 0票数 2

可能重复: Android -获取上下文的各种方法之间有什么不同?

我想知道使用thisClassName.thisgetApplicationContext()myContext有什么区别

在下面的演讲会中使用每一个作为上下文的效果是什么?

代码语言:javascript
复制
public class ClassName extends Activity {
    final ClassName myContext = this;
    ...
    public void onCreate(Bundle savedInstanceState) {
    ...
    button.setOnClickListener(new OnClickListener(){
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "This is a toast", Toast.LENGTH_LONG).show();
        }

    });
    }

你能告诉我对上下文的详细解释吗?我读过罗曼·盖伊的博文这里。也许更多的例子可能会有所帮助:)

EN

回答 2

Stack Overflow用户

发布于 2012-07-23 08:23:05

应用程序上下文与应用程序的生命周期相关联,活动上下文与活动的生命周期相关联。因此,每一个都有它的范围,并且必须被用来在那个级别上提取信息。

通常,您应该始终使用Acitity上下文,除非您需要一个生命周期与当前活动分离的上下文。

导致内存泄漏的是应用程序上下文的使用,将其绑定到应该被垃圾收集的对象,但是保留这个相关的属性(应用程序上下文),它们将被阻止被收集。

票数 1
EN

Stack Overflow用户

发布于 2012-07-23 08:41:03

活动应用程序都是从上下文类派生的。因此,当代码是活动类或应用程序类的一部分时,可以使用this代替上下文对象。在其中一个(例如,在片段中)之外,您可以调用getActivity()来获取封闭活动(并将其用作上下文)。getApplicationContext()是您的活动如何获得比其本身更广泛的上下文。如果您需要在获得它的活动的生存期之后使用上下文(例如,将它传递到一个长期运行的后台线程),您可能需要这样做。

您可能不需要Toast中的应用程序上下文。但是,通过使用它,您的Toast应该能够保持可见,并且不会造成任何崩溃,即使您离开活动的起点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11608709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档