上下文之间的差值[复制](Difference between context [duplicate

2019-09-20 01:19发布

可能重复:
Android的-什么是得到一个背景下的各种方法之间的区别?

我想知道什么是两者的区别: thisClassName.thisgetApplicationContext()myContext

什么是下面的吐司使用每个作为背景的影响?

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();
        }

    });
    }

你能指出我为背景的详细说明? 我已阅读罗曼盖伊的帖子在这里 。 也许几个例子可以帮助:)

Answer 1:

应用上下文被绑定到应用程序的生命周期,并且活动上下文到活动的生命周期。 所以,每一个都有其适用范围,并使用中检索该级别的信息。

通常情况下,你应该总是使用Acitity语境的,除非你需要它的生命周期是从当前的活动分开的环境。

什么会导致你的内存泄漏是应用程序上下文的使用,将其绑定到的对象,应该是垃圾回收,但保持这种相关的属性(应用程序上下文),他们正在被收集的防止。



Answer 2:

活动和应用程序都从上下文类派生的。 因此, this可以代替当代码或者是一个活动或应用程序类的一部分的上下文对象的使用。 这些中的一个(在一个外部的片段 ,例如),可以调用getActivity()来获得封闭的活性(和使用它作为一个上下文)。 getApplicationContext()是你的活动如何得到一个上下文比自己更广泛。 如果你需要使用一个上下文超越活动的寿命,你得到它(例如,通过它变成一个长期运行的后台线程),你可能会想这样。

你可能不需要在祝酒词中的应用环境。 但是,通过使用它,你的面包应该能够保持可见和不引起任何崩溃,即使你离开,你启动它的活动。



文章来源: Difference between context [duplicate]